Anasayfa » Algoritmalar, Java ve Java Teknolojileri

E ‘ NFA to DFA Converter (E ‘ Nfa dan Dfa ya Çeviri Yapan Java Otomata)

27 Nisan 2012 9.691 kez okundu 5 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (1 oy,5 üzerinden : 5,00 )
Loading...

“Automata theory” dersini alan arkadaşların yakından bildikleri e’nfa (epsilon nondeterministic finite automata) dan dfa (deterministic finite automata) ya çevirme problemi vardır. Bu yazımda, bu problem için hazırlanmış nfa’yı dfa’ya çeviren bir  java projesini paylaşacağım.

Javada yazılmış bu program, elinizde mevcut olan bir epsilon nfa yı programa girerek dfa ye çevirmenizi ve dfa yı görsel olarak ekrana çizmenizi sağlamaktadır.

Programdan ekran görüntüleriyle örnek bir çeviri işlemi yapalım.

Bize verilen e’nfa şu şekilde olsun.

Bu örneği programa şu şekilde gireceğiz. Number of State bölümüne 0-10 tane state olduğu için 11 giriyoruz. Language bölümüne yukarıda ki örnekte  verilen dildeki karakterleri virgul ile ayırarak giriyoruz. a,b yazıyoruz ve create table butonuna tıklıyoruz.

Şimdi tabloyu yukarıdaki örnekte olduğu gibi dolduralım. States kolonuna state isimlerini, propert bölümüne start(başlangıç) ve accept(kabul) statelerini belirtiyoruz. Start ve Accept yerine kısaca “s” ve “a” da yazılabilir. Ayrıca bir start state aynı zamanda accept state ise virgul ile ayrılarak ikiside yazılabilir. Epsilon ile geçişleri ve dildeki karakterler ile geçişleri uygun olarak dolduruyoruz. Olmayanları boş bırakıyoruz.Aynı geçişte nfa özelliği sebebiyle birden çok state varsa virgül ile ayırarak yazabiliriz.

Şimdi convert dfa butonu ile çevirme (convert) işlemini yapabiliriz. Bu işlemi yaptığımızda arkada bir pencere daha açılacak ve o da yaratılan dfa nın görsel halini çizecek ekrana. Şu şekilde

Bu da ekran dfa nın çizilmiş hali.

Bu şekilde verilen bir enfa dan dfa ya çevirme işlemini gerçekleştirmiş olduk. Şimdi biraz kodu inceleyelim. Program dokuz tane class dan oluşmaktadır.

  • DrawPanel (Çizim işlemini gerçekleştirmektedir.)
  • Helper (Yardımcı fonksiyonlar içermektedir.)
  • Main (Formumuzun classıdır)
  • State (Kullanıcı tarafından girilen nfa statelerin tutulduğu class)
  • StateDfa (Oluşturulan dfa statelerin tutuluduğu class)
  • StateDfaList (Programın oluşturduğu dfa statelerin listesi)
  • StateList (Kullanıcının girdiği nfa statelerin listesi)
  • State_Relation (Nfa stateler arasındaki ilişkileri tutan class)
  • State_Relation_Dfa (Dfa stateler arasındaki ilişkileri tutan class)

Programın genel anlamda izlediği algoritma şudur.

Programın çalışır halini buradan indirebilirsiniz.(program çalışmaz ise bilgisayarınızda bulunan java runtime environmenti jre7 ye yükseltmeniz gerekecektir),
kaynak kodlarını buradan indirebilirsiniz.

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

5 yorum »

  • demirhan vardar dedi ki:

    Ustad oncelikle tesekkurler ama ben bu kodlari bir turlu derleyemedim. Hangi ide’de ve nasil derleyebiliriz?

    Saygilar

  • admin dedi ki:

    Eclipse ile derleyebilirsiniz.

  • gorrilazz dedi ki:

    hi i tried to run use ecplise, but not working.
    i tried to compile use command prompt, also not working.
    can you tell me how to run this?
    i want to learn it.
    thank you very much

  • NadirCan dedi ki:

    Çok teşekkürler.İşime çok yaradı.

  • Hasan dedi ki:

    Merhaba,

    Okulda verilen projeyle aynı bir uygulama yapmışsınız, acaba proje dosyalarını paylaşabilir misiniz?

    Yada kaynak kodları ne yapmamız gerektiğini belirtirseniz sevinirim.

    İyi çalışmalar,

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.