Kayıtlar

Ocak, 2013 tarihine ait yayınlar gösteriliyor

String Matching - Horspool's Algorithm

Resim
Horspool’s Algorithm Bu konuda brute force string matching algoritmasına alternatif olarak kullanabilecek daha etkin bir algoritma olan Horspool Algoritması açıklanmaktadır. Brute-Force’a benzer şekilde pattern’in son harfinden başlanarak soldan sağa doğru pattern ve text’te karşılıklı denk gelen harfler karşılaştırılır. Eğer pattern’deki tüm karakterlerin eşleşmesi sağlanırsa substring bulunmuş demektir. Bu durumda arama durdurulabilir veya başka eşleşme var mı diye aramaya devam edilebilir. Eşleşme olmazsa pattern’i sağa kaydırmamız gerekir. Bu durumda herhangi bir eşleşmeyi kaçırma olasılığını riske atmadan yapabileceğimiz en büyük olası kaydırmayı yapmak isteriz. Horspool algoritması burada pattern’in son karakterine karşılık gelen (c) karakterine bakarak kaydırma yapar. Burada dört olasılık söz konusudur. Bu durumlardan ilerideki sayfalarda bahsedilecek. BARBER pattern’ini bir text’te aradığımızı düşünelim. Pa

String Matching - Brute Force

Resim
Brute Force String eşleştirme günümüzde sıkça kullanılan bir uygulamadır, neredeyse tüm yazılım ortamlarında arama, karşılaştırma vb. sistemler bulunmaktadır. Bu sistemler aradığımız şeyi bulmamızı kolaylaştırmakta ve bu sayede daha hızlı çalışabilmemizi sağlamaktadır. Örneğin bir e-kitapta özel bir konu arıyor olalım. Küçük bir yazında bu işlem çok zor olmasa da boyut arttıkça ilgilendiğimiz konuyu bulmak çile haline gelmektedir. Burada devreye string eşleştirme algoritmaları devreye girer. Bu algoritmalar sayesinde ilgilendiğimiz konu ile ilgili keyword’leri kullanarak yazın içinde arama yapabilir ve o konuya hızlı bir şekilde ulaşabiliriz. Burada 2 değişken söz konusudur; pattern ve text. Text içinde pattern’in aranacağı pattern’e eşit ya da daha büyük boyutta olan değişkendir, pattern ise text’in içinde bulmak istediğimiz string dizisidir. Bu eşleştirme işlemlerini yapabilmek için çeşitli farklılıklara sahip algoritmalar bulunmaktadır. Bunlardan en basit olan algoritma Brute Fo