Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Лаба по искусственному интеллекту


pupus ©   (2004-07-07 08:57:00) 

Привет всем!
Помогите с лабой по Искусственному интеллекту, препод ниче не обьясняет...
Задание такое:
Разработка синтаксического анализатора abaababababbababaaaba -> S. Правила: ab->S, aS->S, Sb->S, SS->S.
Сделал я ему прогу, там функция одна маленькая, проще простого, так он(препод) говорит, что это не правильно, сделай-ка ты мне поиском в ширину
Никак не могу понять, как ? Поиск в ширину - это к графу надо привезти, матрица смежности и т.д. Но как это к графу привезти ума не приложу.....


pupus   (2004-07-08 12:52:00) [1]


> Igorek

Спасибо за объяснение, прога вроде написана, попробую сдать, но граф так и не построил


Igorek   (2004-07-07 11:16:00) [2]


> pupus   (07.07.04 08:57)  
> Привет всем!
> Помогите с лабой по Искусственному интеллекту, препод ниче
> не обьясняет...
> Задание такое:
> Разработка синтаксического анализатора abaababababbababaaaba
> -> S. Правила: ab->S, aS->S, Sb->S, SS->S.

Имхо если поиск в ширину, то так:
1 если исходная строка = S то выход
2 проходишь строку посимвольно от первого символа до предпоследнего
3 берешь текущий символ + следующий - получаешь пару
4 ищешь и применяешь одно из правил замены (заменяешь напр. ab на S - в примере это будет первым - строка станет Saababababbababaaaba)
5 если прошли строку до конца, то идем на 1

---
при применении правил замены строишь дерево разбора (если надо); правда при обходе в ширину это вроде сложнее; так что лучше делай в глубину; а еще лучше и так и так;


Igorek   (2004-07-07 11:04:00) [3]


> BoxTer   (07.07.04 09:24) [6]
>
> > Сначала обходишь все вершины смежные начальной, потом
> все
> > смежне им, и т.д.
>
> 2FAY - а это, случайно, не поиск в глубину ;-)

Неа. В глубину - это когда идешь в глубину, доходишь до дна, потом выныриваешь на один уровень, потом ныряешь в другом направлении (если его нету, снова выныриваешь)...


Fay   (2004-07-07 10:48:00) [4]

А что она делает?! Мне кажется ничего.


pupus   (2004-07-07 10:35:00) [5]

function ReplaceSub(str, sub1, sub2: string): string;
var
 aPos: Integer;
 rslt: string;
begin
 aPos := Pos(sub1, str);
 rslt := '';
 while (aPos <> 0) do
 begin
   rslt := rslt + Copy(str, 1, aPos - 1) + sub2;
   Delete(str, 1, aPos + Length(sub1) - 1);
   aPos := Pos(sub1, str);
 end;
 Result := rslt + str;
 form1.label1.caption:=result;
end;

ReplaceSub(label1.caption,'Sb','S');
ReplaceSub(label1.caption,'aS','S');
ReplaceSub(label1.caption,'SS','S');

Вот так во было сделано, говорит это ты сам руками перебираешь, а ни хе..а не поиск ни в ширь ни в глубь


Fay   (2004-07-07 09:31:00) [6]

Как запомнил, так и написал. 8) На самом деле незвание роли не играет. Назови хоть "к е#еи матери". 8)

У меня препод, помню, охренел, когда я методом "северо-западного угла" пошёл с "юго-западного". А какая разница?! 8)


BoxTer   (2004-07-07 09:24:00) [7]


> Сначала обходишь все вершины смежные начальной, потом все
> смежне им, и т.д.

2FAY - а это, случайно, не поиск в глубину ;-)


Ega23   (2004-07-07 09:23:00) [8]

А при чём здесь ИИ? Это же обычная формальная грамматика с предикатными функциями.


BoxTer   (2004-07-07 09:21:00) [9]

у чела вопрос стоит - как к графу привести???


Fay   (2004-07-07 09:19:00) [10]

Покажи старую функцию


pupus   (2004-07-07 09:17:00) [11]

Что такое поиск по графу то я знаю, а вот как Строку типа ababbbababa графом представить?


Fay   (2004-07-07 09:03:00) [12]

Сначала обходишь все вершины смежные начальной, потом все смежне им, и т.д.


Наверх

Титульная страница Поиск, карта сайта Написать письмо