Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2014, 03:48   #1
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию Построение 2 конечных автоматов по регулярным грамматикам

Доброго времени суток!Дали задание на практику:
Реализовать на языке высокого уровня программное средство, реализующую следующие функции:
1)Построение по заданной регулярной грамматике конечного автомата.
2)Вывод графа результирующего конечного автомата на экран
Грамматика:
a)G=({S,C,D},{0,1},P,S),где P:
S->1C|0D;C->0D|0S;D->1C|1S|0.
b)G=({S,A,B,C},{a, b, c},P,S),где P:
S->aA|bB|aC;A->bA|bB|c;B->aA|cC|b;C->bB|bC|a.

Меня интересует литература и источники или ссылки где я могу взять информацию о построении автоматов на Паскале например или на С++

у меня уже есть решенные автоматы вручную,осталось вбить в программу.(Они в прикреплённом файле)

У меня есть скромная наработка на Pascal ABC.Net где грамматика вводится с файла и всё.
Можно ли например при нажатии кнопки(которую я создам) создать процедуру чтобы построило конечный автомат по заданной грамматике?
Изображения
Тип файла: jpg Безымянный1111.jpg (10.0 Кб, 120 просмотров)
Тип файла: jpg Безымянный222.jpg (11.3 Кб, 130 просмотров)
Otar4ik вне форума Ответить с цитированием
Старый 28.07.2014, 01:58   #2
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Вот собственно начатая часть,самая лёгкая))))

Код:
program praktika;
 
uses
   System.Windows.Forms, System.IO, System.Text, system;
var
   ff: System.Windows.Forms.Form;
 
type
   MainForm = class
   private
      f: file of char;
      list1, list2: system.Windows.Forms.ListBox;
      b1, b2, b3, b4, b5: System.Windows.Forms.Button;
 
   public
 
 
      procedure load1(sender: object; e: EventArgs);
      begin
         list1.Items.Clear;    
         foreach s: string in &File.ReadAllLines('Gram1.txt', Encoding.GetEncoding(1251)) do
            list1.Items.Add(s);
      end;
 
      procedure load2(sender: object; e: EventArgs);
      begin
         list2.Items.Clear;    
         foreach s: string in &File.ReadAllLines('Gram2.txt', Encoding.GetEncoding(1251)) do
            list2.Items.Add(s);
      end;
 
     procedure konavt1(sender: object; e: EventArgs);
     begin
     end;
 
     procedure konavt2(sender: object; e: EventArgs);
     begin
     end;
 
      procedure vixod(sender: object; e: EventArgs);
      begin
         exit;
      end;
 
      constructor Create;
      begin
         ff := new System.Windows.Forms.Form;
         ff.Width := 550;
         ff.Height := 530;
         ff.Text := 'Построение конечного автомата по заданным регулярным грамматикам ';
 
         b1 := new Button();
         b1.Text := '  Загрузить 1-ую грамматику ';
         b1.Left := 50;
         b1.Top := 15;
         b1.Width := 170;
         b1.Click += load1;
         ff.Controls.Add(b1);
 
         b2 := new Button();
         b2.Text := '  Построение 1-ого конечного автомата ';
         b2.Left := 20;
         b2.Top := 150;
         b2.Width := 230;
         b2.Click += konavt1;
         ff.Controls.Add(b2);
 
         b3 := new Button();
         b3.Text := ' Загрузить 2-ую грамматику ';
         b3.Left := 300;
         b3.Top := 15;
         b3.Width := 170;
         b3.Click += load2;
         ff.Controls.Add(b3);
 
         b4 := new Button();
         b4.Text := '  Построение 2-ого конечного автомата  ';
         b4.Left := 280;
         b4.Top := 150;
         b4.Width := 230;
         b4.Click += konavt2;
         ff.Controls.Add(b4);
 
 
         b5 := new Button();
         b5.Text := '  Выход ';
         b5.Left := 10;
         b5.Top := 450;
         b5.Width := 150;
         b5.Click += vixod;
         ff.Controls.Add(b5);
 
         list1 := new System.Windows.Forms.ListBox();
         list1.Left := 15;
         list1.Top := 50;
         list1.Width := 250;
         list1.Height := 100;
         ff.Controls.Add(list1);  
 
         list2 := new System.Windows.Forms.ListBox();
         list2.Left := 270;
         list2.Top := 50;
         list2.Width := 250;
         list2.Height := 100;
         ff.Controls.Add(list2);  
      end;
   end;
 
begin
   var m := new MainForm;
   Application.Run(ff);  
end.
Otar4ik вне форума Ответить с цитированием
Старый 28.07.2014, 17:50   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

В 1 грамматике при получении 1 в состоянии C должен попадать в состояние ошибки, так как считанная последовательность не соответствует заданной грамматике.E - состояние ошибки. K=({0,1},{S, C, D, F, E}, S, {F, E})
Функция переходов:
состояние 0 1
S D C
C D/S E
D F C/S
E E E
F - выходное состояние
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 28.07.2014, 18:35   #4
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
В 1 грамматике при получении 1 в состоянии C должен попадать в состояние ошибки, так как считанная последовательность не соответствует заданной грамматике.E - состояние ошибки. K=({0,1},{S, C, D, F, E}, S, {F, E})
Функция переходов:
состояние 0 1
S D C
C D/S E
D F C/S
E E E
F - выходное состояние
Спасибо,сейчас попробую исправить и понять.

Скажите пожалуйста,а откуда я смогу взять примеры или алгоритмы чтобы написать это на Паскале например.
(Графы я через модуль граф построил на всякий случай уже)
Otar4ik вне форума Ответить с цитированием
Старый 28.07.2014, 21:30   #5
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Примеры и алгоритмы в книге Ахо, Ульмана, а на Паскале у Шеня.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 28.07.2014, 22:33   #6
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Шень это Шеннон?Алгоритм Шеннона и Фано?
Otar4ik вне форума Ответить с цитированием
Старый 29.07.2014, 12:59   #7
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Шень это российский математик. У него в книге есть готовые реализации на паскале связанные с грамматиками.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 29.07.2014, 16:06   #8
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Спасибо,сейчас скачаю и прочитаю
Otar4ik вне форума Ответить с цитированием
Старый 30.07.2014, 06:00   #9
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Заготовка программы
Вложения
Тип файла: zip _gram.zip (1.5 Кб, 18 просмотров)
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 30.07.2014, 08:53   #10
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Благодарю,сейчас посмотрю и разберу.
Otar4ik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с регулярным выражением kakawkin PHP 0 13.09.2012 01:34
Вопрос по регулярным выражениям fantom_ZET PHP 10 10.12.2010 23:26
Помогите с регулярным вырежением [EX]n1 Помощь студентам 2 04.01.2010 15:34
реализация конечных автоматов классами или без них Armina Общие вопросы C/C++ 1 31.10.2009 03:43