Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Hafta_5 Arama Algoritmaları

Benzer bir sunumlar


... konulu sunumlar: "Hafta_5 Arama Algoritmaları"— Sunum transkripti:

1 Hafta_5 Arama Algoritmaları

2 Arama Algoritmaları ile Gerçek Dünya Örnekleri
Rota Bulma bilgisayar ağları, otomatik seyahat tavsiye sistemleri, havayolu seyahat planlama sistemleri gibi değişik alanlarda kullanılmaktadır Havayolu uygulaması çok karmaşıktır çünkü yol maliyeti çok karmaşıktır: para, yer kalitesi, zaman, uçak tipi, indirimler, ... Ayrıca problemdeki eylemler de tamamen bilinen çıktıları vermez: uçuş gecikebilir, bağlantılar kaçırılabilir, sis veya acil durumlar gecikmeye neden olabilir Gezgin satıcı (travelling salesman) problemi Robot Hareketi Montaj Sırası (Assembly sequencing)

3 Durum Uzayında Arama Durum uzayı bir (V, E) graftır:
V düğümler, E (bir düğümden diğerine) kenarlar kümesidir düğüm: durumu ifade eder Düğümün atası (parent) ile ilgili bilgileri, Ata (parent) düğümden bu düğüme geçmek için gereken işlem hakkında bilgileri diğer istatistiksel bilgileri içerir kenar: uygulanabilir hareketi/işlemi ifade eder Her bir kenarın pozitif bir değeri (maliyet) vardır Düğümün genişletilmesi: bir düğüm üzerinde olası hareketleri uygulayarak, bu düğümden ulaşılabilecek diğer tüm çocuk (child) düğümlerin belirlenmesi

4 Durum Uzayında Arama Düğümün üretilmesi: önceden belirlenmiş (genişletilmiş) bir düğüm üzerinde işlem yaparak diğer bir düğümün temsil ettiği duruma geçmek Başlangıç düğüm bir ya da daha fazla olabilir Amaç testi: üzerinde işlem yapılan düğümün durumunun hedef durum olup-olmadığının belirlenmesi Çözüm: başlangıç durumdan hedef duruma doğru yolda yapılan işlemler sırası Çözümün değeri: çözüm yolundaki kenarların değerlerinin (maliyetlerinin) toplamı

5 Durum Uzayında Arama Tanımı: genişletilmemiş durum uzayı grafının, amaç düğümü de içine alan bir kısmının genişletilmesi yolu ile çözümün aranması Başlangıçta V={S}, S başlangıç düğümdür S genişletildikçe ulaşılan düğümler V’ye, geçilen kenarlar ise E’ye ilave edilir Hedef düğüm üretilene dek tekrar et Düğüm 3 halden birinde olabilir: Henüz genişletilmemiş AÇIK: Genişletilmiş ama üretilmemiş KAPALI (SON): Üretilmiş Arama ağacının büyüklüğü durum uzayı küçük olsa bile sonsuz olabilir Sebebi: döngüler

6 Örnek durum uzayı S: başlangıç, G: hedef Durum uzayı
C F G S 3 4 5 2 Durum uzayı S A D B E C F G 3 2 4 5 Döngüsüz Arama ağacı

7 Arama ağaçlarında yollar
SA S A D B E C F G SDA SDEBA

8 Arama Algoritmaları Yapay zeka problemlerinin çözümünde arama evrensel bir tekniktir Bu yüzden Arama Algoritmaları yapay zeka uygulamalarında önemli yere sahiptirler. Birçok problemin çözümünde arama algoritmaları hızlı ve etkili çözümler sunmaktadır. Bir problem için doğru arama stratejisini seçmek gerekir. Arama stratejilerinden hangisinin seçileceğini belirlerken bazı kriterlere bakmak gerekir:

9 Arama Algoritmaları Arama stratejileri 4 kritere göre karşılaştırılır
Tamlık-Bütünlük (Completeness): Bir tane çözüm olduğunda arama startejisi çözümü garanti ediyor mu? Zaman Karmaşıklığı (Time Complexity): Algoritmanın sonuca ulaşması için gerçekleştirdiği işlemlerin sayısı. Bir çözüm bulmak ne kadar zaman alacak? Alan Karmaşıklığı (Space Complexity): Algoritmanın çalışması için gerekli bellek miktarı. Aramayı yapmak için ne kadarlık bir bellek (memory) gerekli olacak? Eniyileme (Optimality): Farklı çözümler mevcut iken seçilen stratejinin çözümü optimal olan mı? Her zaman en az masraflı çözümü bulabiliyor mu?

10 Arama Algoritmaları Bilgisiz - Körüne Arama (Blind Search)
Bilgili - Sezgisel Arama (Heuristic Search)

11 Bilgisiz (kör) arama yöntemleri
Sadece problem formülasyonundaki mevcut bilgiyi kullanır Durum bilgisinden yararlanmazlar Çözüme ulaşmak için hiçbir bilgi verilmez Aramanın herhangi bir adımında çözüme ne kadar yakın (veya uzak) olduğu veya çözümün bulunabileceği hakkında fikir söylemek mümkün değildir

12 Bilgisiz (kör) arama yöntemleri
Enine öncelikli arama-Breadth-first search-BFS Derinine öncelikli arama-Depth-first search-DFS Sınırlı derinine arama-Depth-limited search-DLS Özyinilemeli derinine arama-Iterative deepening search-IDS Çift Yönlü Arama-Bidirectional Search-BS Tek Maliyetli Arama-Uniform Cost Search- UCS

13 Enine öncelikli arama-Breadth first search
Enine arama algoritması, bulmaca ve oyunlar gibi yapay zeka problemlerine uygulanabilmektedir. Ağaç yapılarında kullanılır. Bu algoritmada istenen şey; aramada hem en kısa yolu bulmak hem de aramayı optimum bir şekilde gerçekleştirmektir. Çalışma prensibi; başlangıç düğümden başlayarak, hedef düğüm bulunana kadar komşu düğümlere dallanma şeklindedir. Bir problemin çözümü varsa enine arama algoritması çözümü garanti eder. Eğer birkaç çözüm var ise en üstte olan yani ilk bulunan çözümü çözüm olarak kabul eder. Bu arama algoritmasında ilk kural "İLK GİREN İLK ÇIKAR"dır.

14 Enine öncelikli arama-Breadth first search
Enine aramada ağaç yapısı, yukarıdan başlayarak, soldan sağa tarayarak ilerler. Bir seviyedeki tüm düğümler genişlendikten (tarandıktan) sonra bir sonraki aşağı seviyeye geçilir. Enine arama algoritması başlangıç durumuna bağlı olarak seviye seviye tüm düğümleri açarak tek tek kontrol eder. Bir seviyeden uzaklaşmadan önce, o seviyeye kadar olan bütün düğümleri dolaşmış olması gerekir.

15 Enine öncelikli arama-Breadth first search
Enine arama algoritması, problemin çözümü daha derinlerde ise verimsiz bir algoritmadır. Çünkü açılan düğüm sayısı artacaktır. Çözümün derinde olması dallanma etmeni (branching factor) olarak bilinmektedir. Başlangıç düğümü de dahil olmak üzere her düğümün b sayıda komşusu olduğunu varsayalım. Kök ilk genişletildiğinde b sayıda dal olacaktır bir sonraki derinlikte b² dallanma olacaktır. Bu şekilde d derinlikte bd dallanma olacaktır. Toplamda değerlendirilmesi gereken düğüm sayısı=1+b+b²+b³… olacaktır. Bu da zaman karmaşıklığı bakımından önemlidir.

16 Enine arama-Breadth first search
b dallanma faktörü, d çözümün derinliği olmak üzere Bütünlük : Var Zaman Karmaşıklığı : O(bd) dir. Alan Karmaşıklığı : O(bd) dir. Optimallik : Her zaman çözüm bulunur.

17 Enine öncelikli arama-Breadth first search
Algoritmanın adımları : Öncelikle bir başlangıç düğümü seçilir ve bu düğüm işaretlenir. Bu düğümün komşuları sırasıyla bir K (kuyruk) listesine yazılır. Bu K listesi komşulukları tutan bir listedir. Bu komşu düğümler teker teker ziyaret edilir ve işaretlenerek Z (ziyaret) listesine eklenir. Z listesi ziyaret edilen düğümleri tutan listedir. K listesindeki ilk düğüm alınarak işaretlenir ve K listesinden silinir. Silinen düğümün komşuları K listesine eklenir. Bu ekleme yapılırken eğer eklenecek düğüm Z listesinde varsa yani daha önce ziyaret edilmişse eklenmeyecektir. Silinen düğümün ziyaret edilen düğümleri Z listesine eklenir (var olanlar eklenmeyecek). Bu şekilde K listesindeki tüm düğümler silininceye kadar devam edilir.

18 Enine öncelikli arama-Breadth first search
Enine aramanın düğümleri arama şekli:

19 Enine öncelikli arama-Breadth first search
Enine aramanın düğümleri arama şekli:

20 Enine öncelikli arama-Breadth first search
Kuyruk : A

21 Enine öncelikli arama-Breadth first search
Kuyruk : B C

22 Enine öncelikli arama-Breadth first search
Kuyruk : C D E

23 Enine öncelikli arama-Breadth first search
Kuyruk : D E D G

24 Enine öncelikli arama-Breadth first search
Kuyruk : E D G C F

25 Enine öncelikli arama-Breadth first search
Kuyruk : D G C F

26 Enine öncelikli arama-Breadth first search
Kuyruk : G C F B F

27 Enine öncelikli arama-Breadth first search
Kuyruk : C F B F

28 Enine arama-Breadth-first search
ÖRNEK: Arama ağacına göre enine arama algoritmasının çalışması Yol Kuyruk Kapatılan Düğümler { A } {} A { B C D} {A} AB { C D E F} { B C D} AC { D E F G H I } { C D E F} AD { E F G H I J } { D E F G H I } ABE { F G H I J K L } { E F G H I J } ABF { G H I J K L M } { F G H I J K L } ACG { H I J K L M } { G H I J K L M } ACH { I J K L M N O } { H I J K L M } ACI { J K L M N O} { I J K L M N O } ADJ { K L M N O P Q } { J K L M N O} ABEK { L M N O P Q } { K L M N O P Q } ABEL { M N O P Q } { L M N O P Q } ABFM { N O P Q } { M N O P Q } ACHN { O P Q } { N O P Q } ACHO { P Q R S T } { O P Q } ADJP { Q R S T } { P Q R S T } ADJQ { R S T U } { Q R S T } ACHOR { S T U } { R S T U } ACHOS { T U V} { S T U } ACHOT { U V } { T U V} ADJQU { V } { U V } ACHOSV { } { V } Burada durumları oluşturma ve genişleme sırası; ABCDEFGHIJKLMNOPQRSTUV şeklindedir. Eğer hedef düğümleri M, V ve J düğümleri ise enine arama algoritması en az derinliğe sahip olan J’yi önce bulacaktır.

29 Örnek S C B A D G E 1 5 8 9 4 3 7 Yol Kuyruk Kapatılan { S } {}
S { A B C } {S} S,A { B C D E G } {S A} S,B { C D E G G' } {S A B} S,C { D E G G' G" } {S A B C} S,A,D { E G G' G" } {S A B C D} S,A,E { G G' G" } {S A B C D E} S,A,G { G' G" } {S A B C D E G} Bulunan çözüm yolu S A G --> maliyeti = 10 Genişletilen düğüm sayısı (hedef düğüm dahil) = 7

30 Derinine Öncelikli Arama (Depth-First Search)
Arama işlemine, enine arama gibi en üstteki düğümden kök (root) başlanır, ama enine aramanın aksine, yatay değil de dikey olarak ilerler. Kökten itibaren, en soldan gidebildiği en alttaki düğüme kadar iner, en alttakine ulaştıktan sonra, Eğer bir yolda çözüm bulunamazsa, arama sonraki en sol ve genişlenmemiş düğümle devam ettirilir. Dallanma faktörüne bakılacak olursa; b dallanma sayısı ve m maksimum derinlik için gerekli bellek alanı b*m olacaktır.

31 Derinine Öncelikli Arama (Depth-First Search)
b dallanma faktörü, m maximum derinlik olmak üzere Bütünlük : Yok, her zaman aramayı sonlandıramaz Zaman Karmaşıklığı : O(bm) dir. Alan Karmaşıklığı : O(b*m) Optimallik : Her zaman çözüm bulunamaz. Enine aramaya göre daha verimli olduğu görülmektedir.

32 Derinine Öncelikli Arama (Depth-First Search)
Derinine aramada olası sorunlar problemin çözümünde gidilen yanlış yolda sıkışıp kalmaktır. Birçok problemin sonsuz veya çok derin ağaçları olabilmektedir böyle durumlarda derinine arama uygun bir çözüm bulamayacaktır. Bu şekilde arama bir önceki duruma dönmeden sürekli devam edecektir, hatta bir önceki seviyede bir çözüm bulunmuşsa bile yine devam edecektir.

33 Derinine Öncelikli Arama (Depth-First Search)
Derinine arama algoritması bu tür sonsuz veya çok derin ağaçlarda sonsuz döngüye girer ve asla bir çözüme ulaşamaz çözüm bir önceki seviyede olsa bile. Bir diğer durum ise algoritma bir çözüm bulabilir ama bu optimal çözüm olmayabilir. Yani bir üst seviyedeki çözüm ile en son bulunan çözüm arasında zaman, bellek bakımından farklar olacaktır. Derine arama yukarıdaki kriterlere göre tam çözümü garanti etmez.

34 Derinine Öncelikli Arama (Depth-First Search)
Derinine aramanın düğümleri arama şekli: Derinine arama algoritmasında, graf üzerinde arama yapılırken öncelikle derinlemesine bakılır ve kökten itibaren en derinde yani uçta bulunan düğüme kadar gidilir. Ulaşılan düğümün hedef düğüm olmadığı anlaşılırsa, başka bir bağlacı olan üstteki bir düğüme geri dönülerek bu bağlaçtan devam edilir.

35 Derinine Öncelikli Arama (Depth-First Search)
Bir düğümün öncelikle tüm alt düğümlerine bakıldıktan sonra aynı seviyedeki diğer düğümlere geçilir. En alta ulaşana kadar düğümleri aç (genişlet) Alttan başlayarak kapa (üret)

36 Derinine Öncelikli Arama (Depth-First Search)

37 Derinine Öncelikli Arama (Depth-First Search)

38 Derinine Öncelikli Arama (Depth-First Search)

39 Derinine Öncelikli Arama (Depth-First Search)

40 Derinine Öncelikli Arama (Depth-First Search)

41 Derinine Öncelikli Arama (Depth-First Search)

42 Derinine Öncelikli Arama (Depth-First Search)

43 Derinine Öncelikli Arama (Depth-First Search)

44 Derinine Öncelikli Arama (Depth-First Search)

45 Derinine Öncelikli Arama (Depth-First Search)

46 Derinine Öncelikli Arama (Depth-First Search)

47 Derinine Öncelikli Arama (Depth-First Search)

48 Derinine Öncelikli Arama (Depth-First Search)
Kuyruk : A

49 Derinine Öncelikli Arama (Depth-First Search)
Kuyruk : B C

50 Derinine Öncelikli Arama (Depth-First Search)
Kuyruk : D E C

51 Derinine Öncelikli Arama (Depth-First Search)
Kuyruk : C F E C

52 Derinine Öncelikli Arama (Depth-First Search)
Kuyruk : G F E C

53 Derinine Öncelikli Arama (Depth-First Search)
ÖRNEK: Arama ağacına göre derinine arama algoritmasının çalışması Gidilen düğüm Kuyruk A A B C D B E F C D E K L F C D K L F C D L F C D F M C D M C D C G H I D G H I D H N O I D N O I D O R S T I D R S T I D S V T I D V T I D T I D I D D J J P Q P Q Q U U Eğer hedef düğümleri M, V ve J düğümleri ise derinine arama algoritması M’yi daha önce bulacaktır.

54 Derinine Öncelikli Arama (Depth-First Search)
Gidilen Düğüm Kuyruk { S } S { A B C } A { D E G B C} D { E G B C } E { G B C } G { B C } Bulunan çözüm yolu: S A G --> maliyeti = 10 Genişletilen düğüm sayısı (hedef düğüm dahil) = 5

55 Sınırlı Derinine Arama (Depth-limited search)
Bu arama yönteminde, derinine aramada olası sonsuz (ölü döngü) arama işlemini önlemek için aramanın belirli bir seviyeye kadar yapılması düşünülmektedir. Bu nedenle derinlik aramada bir yere saplanmamak için sınır şartları verilebilir. L sınır derinliği olmak üzere, eğer gereken çözüm L+1 derinlikte ise, çözüm hiçbir zaman bulunamayacaktır. Karmaşıklık bakımından yöntem sıradan derinine aramaya benzer (azami derinliği ifade eden derinlik sınırını göz önüne almakla)

56 Sınırlı Derinine Arama (Depth-limited search)
Sınırlı Derinlikteki Arama için performans analizi; b dallanma faktörü, L derinlik sınırı olmak üzere Bütünlük : Yok, Zaman Karmaşıklığı : O(bL) dir. Alan Karmaşıklığı : O(b*L) dir. Optimallik : Yok, verilen sınır içinde çözüm bulunamayabilir.

57 Sınırlı Derinine Arama (Depth-limited search)

58 Yinelemeli derinine arama (Iterative deepening search)
Yinelemeli derinlikte arama tüm olası derinlik sınırlarını deneyerek, en iyi derinlik sınırını seçen bir stratejidir. Derinine öncelikli (depth first) ve enine öncelikli (breadth first) arama algoritmalarının iyi taraflarını kendinde barındıran algoritmadır. Bu algoritmada, klasik derinine öncelikli arama kullanılır fakat arama yapmaya izin verilecek maksimum ağaç derinliği her bir adımda bir arttırılır. Derinine öncelikli aramada olduğu gibi alan karmaşıklığının daha az olması yanı sıra enine öncelikli aramadaki gibi en iyi (optimum) sonuç verir. Bütün düğümleri dolaşarak aranan düğümü bulmayı garanti eder bu yüzden algoritma tam arama algoritmasıdır.

59 Yinelemeli derinine arama (Iterative deepening search)
Algoritma basitçe derinlik değerini bir değişkende tutmakta ve bu değeri her adımda arttırmaktadır. Yineleme yapısı (iteration) basit bir döngü (loop) olarak düşünülebilir ve her adımda derinliğin, bir döngü değişkeni (loop variable) gibi düşünülerek derinleştiği kabul edilebilir. önce 2 seviyede, sonra 3 , sonra 4… seviyede arama yapılır, bulunan hamleler içinden en iyisi çözüm olarak kabul edilir. Pek çok satranç programı arama işlemini yinelemeli derinine arama ile gerçekleştirir.

60 Yinelemeli derinine arama (Iterative deepening search)

61 Yinelemeli derinine arama l =0

62 Yinelemeli derinine arama l =1

63 Yinelemeli derinine arama l =2

64 Yinelemeli derinine arama l =3

65 Yinelemeli derinine arama (Iterative deepening search)
Sınırlı derinine arama yönteminde üretilen düğümler sayısı: NDLS = b0 + b1 + b2 + … + bd-2 + bd-1 + bd Yinelemeli derinine aramada üretilen düğümler sayısı: NIDS = (d+1)b0 + d b^1 + (d-1)b^2 + … + 3bd-2 +2bd-1 + 1bd Örnek: b = 10, d = 5, NDLS = , , ,000 = 111,111 NIDS = , , ,000 = 123,456 Yineleme ve sınırlı arama arasındaki fark: (123, ,111)/111,111 = 11%

66 Çift Yönlü Arama (Bidirectional Search)
Aramaya başlangıç durumundan ileri doğru ve sondan geriye doğru arama yapar belirlenen bir durumda ikisi karşılaşana kadar devam eder. Baştaki arama ve sondaki arama her birisi toplam yolun yarısını almış olur.

67 Çift Yönlü Arama (Bidirectional Search)
İleri ve geri aramaların her biri sadece yarım yol gider. Enlemesine arama yapılır. Bütünlük : Evet Zaman Karmaşıklığı : O(bd/2) Alan Karmaşıklığı : O(bd/2) Optimallik : Eğer tüm maliyetler eşitse Evet

68 Düşük Maliyetli Arama (Uniform Cost Search )
Bir düğüme olan yolları maliyetlerine göre artacak şekilde sıralar. Genişlemeyi yani komşuları ziyaret etmeyi maliyeti en az olan, en yakın olanı seçer ve genişlemeyi bu düğümle yapar. Eğer tüm yolların maliyeti aynı ise enine arama gibidir.

69 Düşük Maliyetli Arama (Uniform Cost Search )
Dallar üzerinde toplam en düşük maliyetli düğümü seçer ve genişletir. b = dallanma faktörü, d = en düşük maliyetli çözümün derinliği Bütünlük : Eğer b sonlu ve maliyet >0 ise Evet Zaman Karmaşıklığı : O(bd) Alan Karmaşıklığı : O(bd) Optimallik : Tüm maliyetler pozitif ise Evet

70 Düşük Maliyetli Arama (Uniform Cost Search )
Algoritmanın çalışması; Kök düğümün komşularından itibaren aramaya başlanır. Düğümünün komşularına bakılır ve maliyetleri elde edilir daha sonra en az maliyete sahip komşu düğüme gidilir. Hedef düğüme erişildiğinde işlem tamamlanır, hedefe erişilmediğinde 2. Adıma geri dönülür. Tüm maliyetler birbirine eşitse enine arama şeklinde devam edilir.

71 Düşük Maliyetli Arama (Uniform Cost Search )
5 1 15 A C B D F 10 E B,C,D  B min(1,5,15)1 F,C,D  C min(11,5,15) 5 F,E,D  E min(11,10,15)10

72 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(START,0)}

73 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(p,1) (d,3) (e,9)}

74 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(d,3) (e,9) (q,16)}

75 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(b,4) (e,5) (c,11) (q,16)} Doğrudan e ye gitmek yerine, d üzerinden e ye gitmenin maliyeti daha ucuz, e değeri 9 dan 5 e güncellenir.

76 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(e,5) (a,6) (c,11) (q,16)}

77 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(a,6) (h,6) (c,11) (r,14) (q,16)}

78 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(h,6) (c,11) (r,14) (q,16)}

79 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(q,10) (c,11) (r,14)} p üzerinden q ye gitmek yerine, h üzerinden q ye gitmenin maliyeti daha ucuz, q değeri 16 dan 10 a güncellenir.

80 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(c,11) (r,13)}

81 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(r,13)} PQ = {(f,18)}

82 Düşük Maliyetli Arama (Uniform Cost Search )
PQ = {(GOAL,23)}

83 Düşük Maliyetli Arama (Uniform Cost Search )
Sonuçta belirlenen yol: {START, d, e, h, q, r, f, GOAL}

84 Düşük Maliyetli Arama (Uniform Cost Search )
Başlangıç düğümü S Hedef düğüm G Initialization: { [ S , 0 ] } Iteration1: { [ S->A , 1 ] , [ S->G , 12 ] } Iteration2: { [ S->A->C , 2 ] , [ S->A->B , 4 ] , [ S->G , 12] } Iteration3: { [ S->A->C->D , 3 ] , [ S->A->B , 4 ] , [ S->A->C->G , 4 ] , [ S->G , 12 ] } Iteration4: { [ S->A->B , 4 ] , [ S->A->C->G , 4 ] , [ S->A->C->D->G , 6 ] , [ S->G , 12 ] } Iteration5: { [ S->A->C->G , 4 ] , [ S->A->C->D->G , 6 ] , [ S->A->B->D , 7 ] , [ S->G , 12 ] } Iteration6 final output S->A->C->G

85 Arama Stratejilerinin Karşılaştırma Tablosu
Kriter Breath Firsrt Uniform Cost Depth First Limited İterative Deeping Bidirectional Zaman bd bm bl bd/2 Uzay Optimal? Evet Hayır Bütünlük Evet, eğer l ≥ d Şekil: Arama stratejilerin gelişimi; b dallanma faktörü, d çözümün derinliği, m arama ağıcındaki maksimum derinlik, l derinlik sınırı


"Hafta_5 Arama Algoritmaları" indir ppt

Benzer bir sunumlar


Google Reklamları