Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Dizi arama algoritması

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
Dizi eşleme algoritmaları olarak da adlandırılan dizi arama algoritmaları, bir ya da birkaç dizinin (örüntü) daha büyük bir dizi ya da metin içindeki yerinin bulunmasını konu edinen önemli bir dizi algoritması sınıfıdır. Σ bir alfabe (sonlu küme) olmak üzere örüntü ve aranan metin Σ kümesinin elemanlarından oluşan bir zincir olarak tanımlanabilmektedir. Σ olağan bir alfabe (Türkçede yer alan harfler kümesi) olabileceği gibi ikili alfabe (Σ = {0,1}) ve DNA alfabesi (Σ = {A,C,G,T}) biçiminde de bulunabilmektedir. Dizinin kodlanma biçimi dizi arama algoritmalarının başarımını etkilemektedir. Değişken uzunluklu kodlama yöntemi kullanıldığında n. karakteri bulmak güçleşmekte; bu, gelişmiş dizi algoritmalarını yavaşlatıcı bir etken olarak öne çıkmaktadır. Bu sorunun üstesinden gelmenin yolu belirli karakterler yerine kod dizilerini eşleştirmektedir ancak bu yöntem, kodlamanın yanlış sonuçların önüne geçecek biçimde tasarlanmadığı durumlarda pek güvenilir değildir. Temel sınıflandırma Algoritmalar kullandıkları örüntü sayısına göre sınıflandırılabilmektedirler. Tek örüntülü algoritmalar m örüntünün, n aranan metnin uzunluğu olsun. Sonuşmaz süreler O, Ω, and Θ gösterimi biçiminde ifade edilmektedir. Boyer–Moore dizi arama algoritması, ilgili yazında kullanılan başlıca algoritma olarak kabul edilmektedir. Sonlu örüntü kümesi kullanan algoritmalar Aho-Corasick algoritması Commentz-Walter algoritması Rabin-Karp dizi arama algoritması Sonsuz sayıda örüntü kullanan algoritmalar Doğal olarak sayılamayan örüntüler genellikle düzenli dilbilgisi ya da düzenli ifadeler biçiminde gösterilmektedir. İkincil sınıflandırma En sık kullanılan sınıflandırma yöntemlerinden biri önişlemi ana ölçüt olarak kabul etmektedir. Saf dizi arama Bir dizinin başka bir dizi içinde yer alıp almadığını anlamanın en basit olmasına karşın en verimsiz yolu dizinin her karakterini sırayla eşleştirmeye çalışmaktır. Bu yöntemde aranan dizi metnin ilk karakteriyle karşılaştırılır. Bu karakterlerin birbiriyle uyuşmaması durumunda aynı işlem metnin ikinci karakteri için yinelenir. Olağan koşullarda karakterlerin eşleşmediğini anlamak için ortalama olarak O(n + m) adım gerekliyken (n metnin, m örüntünün uzunluğunu göstermektedir) en elverişsiz durumda ("aaaab" dizisini "aaaaaaaaab" içinde aramak gibi) gerekli ortalama adım sayısı O(nm)'ye eşittir. Sonlu dizi makinesi tabanlı arama [[Dosya:DFA search mommy.svg|upright=0.91|küçükresim|sağ|"MOMMY" sözcüğünü fark edebilen bir DFA]] Bu yöntemde geri dönüşler, istenen diziyi içeren örüntüleri fark edebilen bir gerekirci sonlu durum makinesi (DFA) oluşturularak ortadan kaldırılabilmektedir. Üstküme yapımı yöntemiyle tasarlanan bu gereçlerin tutarı yüksek olsa da kullanımları görece kolaydır. Bu yöntem gelişigüzel düzenli ifadelere ilişkin aramalarda sıklıkla kullanılmaktadır. Kısa yöntemler Knuth–Morris–Pratt, aranan diziyi sonek biçiminde algılayabilen bir DFA oluştururken Boyer–Moore aramaya örüntünün sonundan başlamakta, böylece her adımda örüntü uzunluğu ölçüsünde yol kat edebilmektedir. Baeza–Yates önceki j karakterin aranan dizinin bir öneki olup olmadığını takip edebildiğinden bulanık dizi aramayla bağdaştırılabilmektedir. Bitkin algoritma Baeza-Yates'in bir uygulamasıdır. Dizin yöntemleri Görece hızlı çalışan arama algoritmaları metnin önişlemden geçirilmesini gerektirmektedir. Sonek ağacı ya da sonek dizisi gibi altdizi dizinleri oluşturularak örüntü daha kolay biçimde bulunabilmektedir. Bir sonek ağacı sürede hazırlanabilmekte ve metin içinde yer alan sayıdaki örüntü sürede bulunabilmektedir (alfabe büyüklüğü sabit olmak koşuluyla). Diğer yöntemler Üçlük arama gibi bazı arama yöntemleri metin ve örüntüyü birebir eşlemek yerine bu iki dizi arasında bir "yakınlık" değeri hesaplamayı amaçlamaktadır. Bu tür yöntemler "bulanık" aramalar olarak da adlandırılmaktadır. Notlar Kaynakça R. S. Boyer & J. S. Moore, A fast string searching algorithm , Carom. ACM 20, (10), 262–272 (1977) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein. Introduction to Algorithms, 2. basım. MIT Press & McGraw-Hill, 2001. ISBN 0-262-03293-7. 32. Bölüm: Dizi Eşleme, s. 906–932 Dış bağlantılar Dev örüntü eşleme bağlantıları listesi StringSearch – Java'da yüksek başarımlı örüntü eşleme algoritmaları Dizi Eşleme Algoritmaları Dizi benzerlik ölçütleri Boyer-Moore-Raita-Thomas Kategori:Karakter dizileri üzerine algoritmalar Kategori:Arama algoritmaları
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Izgara yada normal mod

Temanızda forum listeleme yapısını ızgara yapısında yada normal yapıda listemek için kullanabilirsiniz.

Forum arkaplan resimleri

Forum arkaplanlarına eklenmiş olan resimlerinin kontrolü senin elinde, resimleri aç/kapat

Sidebar blogunu kapat/aç

Forumun kalabalığında kurtulmak için sidebar (kenar çubuğunu) açıp/kapatarak gereksiz kalabalıklardan kurtula bilirsiniz.

Yapışkan sidebar kapat/aç

Yapışkan sidebar ile sidebar alanını daha hızlı ve verimli kullanabilirsiniz.

Radius aç/kapat

Blok köşelerinde bulunan kıvrımları kapat/aç bu şekilde tarzını yansıt.

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Geri