Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinde, çeşitli veri yapılarının (data structures) üzerinde bir bilginin aranması sırasına kullanılan algoritmaların genel ismidir. Örneğin bir dosyada bir kelimenin aranması, bir ağaç yapısında (tree) bir düğümün (node) aranması veya bir dizi (array) üzerinde bir verinin aranması gibi durumlar bu algoritmaların çalışma alanlarına girer.
Yapısal olarak arama algoritmalarını iki grupta toplamak mümkündür.
- Uninformed Search (Bilmeden arama)
- Informed Search (Bilerek arama)
Arama işleminin bilmeyerek yapılması demek, arama algoritmasının, probleme özgü kolaylıkları barındırmaması demektir. Yani her durumda aynı şekilde çalışan algoritmalara uninformed search (bilmeden arama) ismi verilir. Bu aramaların bazıları şunlardır:
-
Listeler (diziler (array)) üzerinde çalışan arama algoritmaları:
-
Şekiller (graflar (Graphs) ) üzerinde çalışan algoritmalar
- Sabit Maliyetli Arama (Uniform Cost Search)
- Floyd Warshall algoritması
- Prim’s Algoritması
- Kruskal Algoritması
- Dijkstra Algoritması
- Bellman Ford Algoritması
- İkili arama ağacı (Binary Search Tree)
- Prüfer dizilimi
- Ağaçlarda Sığ öncelikli arama (breadth first search)
- Şekillerde (Graph) sığ öncelikli arama (Breadth First Search, BFS)
- Derin öncelikli arama (depth first search)
- Derin Limitli Arama (Depth Limited Search) Algoritması
- Yinelemeli Derinleşen Derin Öncelikli Arama Algoritması (Iterative Deepining Depth First Search, IDDFS)
- Patricia Ağaçları
- Trie Ağaçları (metin ağaçları, trie trees)
- B-ağaçları (B-Tree)
-
Metin arama algoritmaları (bir yazı içerisinde belirli bir dizgiyi (string) arayan algoritmalar)
Arama işleminin bilerek yapılması ise, algoritmanın probleme ait bazı özellikleri bünyesinde barındırması ve dolayısıyla arama algoritmasının problem bazlı değişiklik göstermesi demektir. Bu algoritmaların bazıları a aşağıda listelenmiştir:
Bu tip siteleri okumak accayip haz veriyor, ah okuyabilseydim.Bunlar çok değerli bilgiler
Çok teşekkürler hocam çok güzel bilgiler bunlar.
hocam bunların ismi değil c# kodları lazım ama hiç bir yerde yok çıldırcam
Hocam Merhaba,
Mesela elimizde 1000 lik bir sayı dizisi olsun ve bu dizinin 999 tanesi aynı değere sahip ama rastgele bir indisin değeri bunlardan farklı olsun.Farklı olan değeri en kısa zamanda nasıl bulabilirim?Ne tarz bir algoritma düşünmem gerekiyor.
Teşekkürler