Задачи по ЕАИ

Задачите на контролните и писмения изпит по ЕАИ са лесни.
Реално никаква мисловна дейност не се изисква, за всяко нещо има алгоритми и задачите просто проверяват дали тези алгоритми са научени. След като това беше казано, тук ще бъдат разгледани всички видове задачи, които могат да бъдат дадени на изпит и ще представя метода, по който се решават. Доказателства, че тези методи са коректни не се изискват на изпит, затова те ще бъдат поместени в лекциите.

Генериране на Краен, Детерминиран, Минимален Автомат

Задължително поне на две от оформящите крайната оценка контролни ще има задача за генериране на такъв автомат. Това най-обикновено се състои от няколко етапа, всеки от които може да бъде прескочен(защото понякога отнема буквално цял час) и ако е достатъчно очевидно, може даже и да ви се размине :). Етапите трябва да се изпълняват подред, иначе отговорът няма да е верен.

Задача: Даден е езикът L, които се състои от всички думи над азбуката {0, 1, 2}, които имат сума на буквите кратна на 3 и съдържащи "120" като поддума. Да се състави Краен Детерминиран Минимален Автомат, който разпознава езика L.

1. Генериране на Автомат, който разпознава езика

2. Детерминиране на Автомат

3. Минимизация на Автомат

Доказване нерегулярност на даден език

Note: Pumping лемата не е достатъчно условие за регулярност!

Този тип задачи се решават с прилагане на pumping лемата за регулярни езици. Нейното твърдение е:
Ако един език L е регулярен,то съществува такова число n , че всяка дума от L с дължина поне n може да се раздели на три части xyz такива, че:

  • |xy| <= n
  • |y| >= 1
  • $xy^i \in L$ за всяко цяло неотрицателно i.

За да бъде един език нерегулярен, то трябва да се докаже противоречие в горната дефиниция. Най-често това става като се вземе произволно n и се покаже, че твърдението не е изпълнено за някоя дума.
Пример:
Даден е езикът L. $L= \{ uww^r | u,w \in \{0,1\}^*\}, |u| < |w| \}$. Да се докаже, че L не е регулярен.

Доказване, че език не е контекстно свободен

Тук има два вида задачи:

Pumping Lemma

Лемата за покачването си има вариант и за CFL.

Ако един език L е контекстно свободен,то съществува такова число n , че всяка дума w от L, с дължина поне n, може да се раздели на пет части uvxyz такива, че:

  • |vxy| <= n
  • |vy| >= 0 (забележка: vy не е задължително поддума на uvwxyz. Това е все едно: "|v| > 0 или |y| > 0")
  • $uv^ixy^iz \in L$ за всяко цяло неотрицателно i.

Естествено, ползва се най-вече за i=0 и i=2.
Пример:
Даден е езикът $L = { a^nb^nc^n }$ при стандартните уговорки за означенията. Да се докаже, че не е контекстно свободен.

Сечение с регулярен език

Ако пресечем контекстно-свободен език с регулярен език, получава се отново контекстно свободен език
Пример:
Езикът L = {(a,b,c)*}, където всяка от трите букви се среща по равен брой пъти.

Намиране на граматика за даден език

В този тип задачи е дадено описание на някакъв език и трябва да се създаде граматика, която го генерира.
Това става на две части - първо се съставя някаква граматика, за която се предполага, че генерира езика. Тук не мога да помогна. Основният принцип, на който стават нещата е "Умен Съм Бил…". За щастие, на контролни и изпити се дават само очебийни граматики - акцентът не е на тази част.
След това трябва да се докаже, че точно това е търсената граматика.

  • За всяка дума от езика трябва да се докаже, че граматиката я разпознава.
  • За всяка дума, генерирана от граматиката трябва да се докаже, че принадлежи на езика.

И двете стават чрез индукция.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License