Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanFaruk Gucer Değiştirilmiş 10 yıl önce
1
p 6. Ünite stack veri tipini anlatmaktadır. p Bu ünitede stack laerin örnek uygulamalarından bahsedilmektedir. p Bu sunumda N-Queens problemini çözmek için geriye gitme denen başka bir kullanım şeklinden bahsedeceğiz. Bir Stack’in Kullanımı Java Kullanarak Veri Yapıları ve Veri Yapıları ve Diğer Nesneler
2
N-Queens Problemi p Farzedelim ki 8 tane satranç taşınız var... p...ve bir satranç tahtası
3
N-Queens Problemi İki taş birbirine isabet etmeyecek şekilde taşları tahtaya yerleştirebilir misiniz? ?
4
N-Queens Problemi İki taş aynı satırda olmayacak..
5
N-Queens Problemi İki taş aynı satırda veya aynı sütunda olmayacak..
6
N-Queens Problemi İki taş aynı satırda veya aynı sütunda veya aynı köşegen üzerinde olmayacak.
7
N-Queens Problemi Taşların sayıları ve tahtanın boyutu değişebilir. N Taş N sütun N satır
8
N-Queens Problemi N tane taşı N x N boyutunda bir tahtaya yerleştirecek bir yöntem bulmaya çalışan bir program yazacağız.
9
Program nasıl çalışır Program herbir taşın nerede olduğunu tutnak için bir stack kullanır.
10
Program nasıl çalışır Program tahtaya bir taş yerleştirmeye her karar verişinde,yeni taşın pozisyonu stack’teki bir kayıtta tutulur. 1.SÜTUN,1.SATIR
11
Program nasıl çalışır Aynı zamanda şimdiye kadar dolan satır sayısını tutan bir kaydımız da var. 1.SÜTUN,1. SATIR 1 dolu
12
Program nasıl çalışır Bir sonraki satıra her yeni bir taş yerleştirdiğimizde, taşı ilk sütundan başlayarak yerleştiriyoruz.. 1.SATIR,1.SÜTUN 1 dolu 2. SATIR,1.SÜTUN
13
Program nasıl çalışır...eğer bir başka taşla çakışıyorsa, taşı bir sonraki sütuna kaydırıyoruz. 1.SATIR,2.SÜTUN 1 filled 2.SATIR,2.SÜTUN
14
Program nasıl çalışır Eğer yine çakışma varsa, tekrar sağa doğru kaydırıyoruz. 1.SATIR,1.SÜTUN 1 dolu 2.SATIR,3.SÜTUN
15
Program nasıl çalışır Eğer çakışma yoksa duruyoruz ve dolunun değerini 1 arttırıyoruz. 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,3.SÜTUN
16
Program nasıl çalışır 3. satıra bakalım.ilk denediğimiz pozisyonda çakışma var... 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,3.SÜTUN 3.SATIR,1.SÜTUN
17
Program nasıl çalışır...böylece ikinci sütuna kaydırıyoruz. Fakat başka bir çakışma çıkıyor karşımıza. 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,3.SÜTUN 3.SATIR,2.SÜTUN
18
Program nasıl çalışır...ve üçüncü sütuna kaydırıyoruz.Baş ka bir çakışma meydana çıkana kadar. 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,3.SÜTUN 3.SATIR,3.SÜTUN
19
Program nasıl çalışır...ve 4.sütuna kaydırıyoruz.4. sütunda hâlâ bir çakışma var,dolayısıyla tekrar sağa kaydırmayı deniyoruz.. 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,3.SÜTUN 3.SATIR,4.SÜTUN
20
Program nasıl çalışır...fakat başka gidecek yer yok. 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,3.SÜTUN 3.SATIR,4.SÜTUN
21
Program nasıl çalışır Bir satırda gidecek yerimiz kalmayınca: p En üsttekini stack’ten al p dolu’yu 1 azalt p Ve bir önceki satır üzerinde çalışmaya devam et. 1.SATIR,1.SÜTUN 1 filled 2.SATIR,3.SÜTUN
22
Program nasıl çalışır Şimdi 2. satır üzerinde çalışmaya devam ediyoruz,taşı sağa doğru kaydırıyoruz. 1.SATIR,1.SÜTUN 1 dolu 2.SATIR,4.SÜTUN
23
Program nasıl çalışır Bu pozisyonda hiçbir çakışma yok,dolayısıyla dolu nun değerini 1 arttırabiliriz,ve 3. satıra geçebiliriz. 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,4.SÜTUN
24
Program nasıl çalışır 3. satırda tekrar ilk sütundan başlıyoruz. 1.SATIR,1.SÜTUN 2 dolu 2.SATIR,4.SÜTUN 3.SATIR,1.SÜTUN
25
N-Queens için yalancı kod ŒKararlarımızı kaydedebileceğimiz bir stack başlat. İlk taşı yerleştir,pozisyonunu stack’in en üstü olarak ayarla,dolu değerini 0 a eşitle. Bu basamakları tekrarla p Eğer taşlar arasında hiç çakışma yoksa.. p Eğer çakışma varsa ve taşı sağa doğru kaydırmak için yer varsa.. p Eğer bir çakışma varsa ve taşı sağa kaydırmak için yer yoksa..
26
N-Queens için yalancı kod ŽBu basamakları tekrar et p Eğer taşlarla ilgili hiç bir çakışma yoksa.. dolu değerini 1 arttır. Eğer dolu değeri N ise, algoritma olmuştur. Değilse,bir sonraki satıra geç ve taşı ilk sütuna koy.
27
N-Queens için yalancı kod ŽBu basamakları tekrar et p Eğer taşlarla ilgili hiç bir çakışma yoksa.. p Eğer bir çakışma varsa ve taşı sağa kaydıracak kadar yerimiz varsa.. Yeni pozisyonu belirlemek için stack’in en üstündeki kaydı ayarlayarak elindeki taşı sağa kaydır,
28
N-Queens için yalancı kod ŽBu basamakları tekrar et p Eğer taşlarla ilgili hiçbir çakışma yoksa... p Eğer bir çakışma varsa ve taşı sağa kaydıracak kadar yerimiz varsa.. p Eğer bir çakışma varsa ve taşı sağa kaydırmak için yer yoksa.. Geridön! Stack’i doldurmaya devam et, taşı sağa hareket ettirebileceğin bir satır bulana kadar, her doldurulan icin eleman 1 azalt.
29
N-Queens için yalancı kod ŽBu basamakları tekrar et p Eğer taşlarla ilgili hiçbir çakışma yoksa... p Eğer bir çakışma varsa ve taşı sağa kaydıracak kadar yerimiz varsa.. p Eğer bir çakışma varsa ve taşı sağa kaydırmak için yer yoksa.. Geridön! taşı sağa kaydırabileceğin bir satıra ulaşıncaya kadar stack i doldurmaya devam et, ve dolu değerini 1 azalt,taşı sağa kaydır
30
Programın çalışmasını izleme Programın demosunu görmek için farenin sol düğmesini çift klikleyin:
31
p Birçok stack uygulaması vardır. p Bizim gösterdiğimiz uygulamanın adı backtracking. p Backtracking için anahtar: Her seçim bir stack içinde kaydediliyor. p Elinizdeki karar için seçenekler bittiyse,stack’in üstündekini alın,bir önceki karar için farklı seçenkeler deneyin. Özet
32
SON Presentation copyright 1999, Addison Wesley Longman, For use with Data Structures and Other Objects Using Java by Michael Main. Some artwork in the presentation is used with permission from Presentation Task Force (copyright New Vision Technologies Inc) and Corel Gallery Clipart Catalog (copyright Corel Corporation, 3G Graphics Inc, Archive Arts, Cartesia Software, Image Club Graphics Inc, One Mile Up Inc, TechPool Studios, Totem Graphics Inc). Students and instructors who use Data Structures and Other Objects Using Java are welcome to use this presentation however they see fit, so long as this copyright notice remains intact.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.