formal diller

2
1.Soru a n b n ifadesi n>=0 için n = 0 için boş üretir n = 1 için ab üretir n = 2 için aabb üretir n = 3 için aaabbb üretir Algoritma ile yapmasını istediğimiz çözümün el ile yapılışı S aSb / L Burda aSb demek S yerine her zaman üstte S’nin karşısında tanımladığımız değerler gelecek L = Lamda demek. Bu da S yerine boş gelsin demek. Yani n = 2 için SaSbaaSbbaaLbbaabb L ‘ yi bir önceki adımda yazmayıp direk aabb diyebiliyoruz. Bu okla yaptığımız olay yukarıda bulduğumuz algoritmanın örneğimize uygulayıp açarak doğru sonucu verip vermediğini öğreniyoruz. 2.soru a n b m ifadesi n,m>=0 n = 0 için m = 0 için boş üretir n = 0 için m = 1 için b üretir n = 0 için m = 2 için bb üretir n = 1 için m = 0 için a üretir n = 2 için m = 0 için aa üretir n = 1 için m = 1 için ab üretir n = 1 için m = 2 için abb üretir n = 1 için m = 3 için abbb üretir n = 2 için m = 3 için aabbb üretir Algoritması SaS/Sb/L Burda aS ile hep a sayısını istediğimiz kadar artırabiliriz.Aynı şekilde Sb ile b sayısını artırabiliriz. Ama dikkat edilmesi gereken sorumuzda a her zaman başta b her zaman sonda olmasını istemişiz.Dolayısıyla b sayısını üretirken S değerini b’nin sağına mı(bS) , yoksa solunamı(Sb) koymamız gerektiğinide belirlemeliyiz. Örnek verecek olursak SaSaaSaaaSaaaSbaaab

Upload: burakizu

Post on 25-Dec-2015

4 views

Category:

Documents


1 download

DESCRIPTION

Biçimsel Diller

TRANSCRIPT

Page 1: Formal Diller

1.Soru anbn ifadesi n>=0 için

n = 0 için boş üretir

n = 1 için ab üretir

n = 2 için aabb üretir

n = 3 için aaabbb üretir

Algoritma ile yapmasını istediğimiz çözümün el ile yapılışı

S aSb / L

Burda aSb demek S yerine her zaman üstte S’nin karşısında tanımladığımız değerler gelecek

L = Lamda demek. Bu da S yerine boş gelsin demek.

Yani n = 2 için SaSbaaSbbaaLbbaabb L ‘ yi bir önceki adımda yazmayıp direk aabb diyebiliyoruz. Bu okla yaptığımız olay yukarıda bulduğumuz algoritmanın örneğimize uygulayıp açarak doğru sonucu verip vermediğini öğreniyoruz.

2.soru anbm ifadesi n,m>=0

n = 0 için m = 0 için boş üretir

n = 0 için m = 1 için b üretir

n = 0 için m = 2 için bb üretir

n = 1 için m = 0 için a üretir

n = 2 için m = 0 için aa üretir

n = 1 için m = 1 için ab üretir

n = 1 için m = 2 için abb üretir

n = 1 için m = 3 için abbb üretir

n = 2 için m = 3 için aabbb üretir

Algoritması

SaS/Sb/L

Burda aS ile hep a sayısını istediğimiz kadar artırabiliriz.Aynı şekilde Sb ile b sayısını artırabiliriz.

Ama dikkat edilmesi gereken sorumuzda a her zaman başta b her zaman sonda olmasını istemişiz.Dolayısıyla b sayısını üretirken S değerini b’nin sağına mı(bS) , yoksa solunamı(Sb) koymamız gerektiğinide belirlemeliyiz. Örnek verecek olursak SaSaaSaaaSaaaSbaaab burda S yerine Sb yazdık ve bitirdik.Ama S burda sol tarafta.Yani istediğimiz gibi.Birde S nin sağ tarafta olma ihtimali var o zaman sonuç şöyle oluyor. SaSaaSaabSaabaSaaba diye bitebiliyor. Yani a sayısını ürettikten sonra b sayısınıda ürettik buraya kadar doğru ama b ‘nin sağ tarafında S olduğu için ben algoritmamda belirtildiği gibi aS sayısıda S yerine gelebilir.Dolayısıyla b den sonra tekrar a sayısı üretir.Bu bizim yanlış algoritma ürettiğimizi belirtir. Yanlış algoritma Örnek bahsettiğim SaS/bS/L