2013-07-11 12 views
5

Bütün akşam başarısız oldu, Boyer and Moore pattern matching algorithm kullanım için "anabanana" arama terimi için basit bir kaydırma tablosu hesaplamak. enter image description hereBoyer ve Moore algoritması, vardiya tablosu hesaplaması

herkes anlamama ve vardiya tablosunu bulmak için resmin yöntemi açıklanmasına yardımcı olabilir:

Ben herhangi bir açıklamaları olmadan şu örneği bulundu?

+2

Sorunuzun arkasında daha fazla bilgi verebilir misiniz? Daha spesifik olarak, [ne denediniz?] (Http://whathaveyoutried.com) ve bu örnekte aranan metni biliyor musunuz? –

+0

no örnekte aranan metin verilmiyor. Görev, anabanana kelimesi için bu yöntemi kullanarak kaydırılabilir hesaplamaktır. Gönderdiğim resim çözüm önerisidir. Vardiya tablosunu hesaplamak için başka basit bir yöntem varsa bunu da kullanırdım. Yani benim sorum: "Bu basit bir yöntemle bir bilgisayar kullanmadan boyer ve moore ile kullanım için kaydırılabilir hesaplamak nasıl" thx –

+0

Bu örnek bulundu? Bana bir link ver ve belki sana yardım edebilirim. – Sayakiss

cevap

3

Burada ne yapıldığını anladığımı düşünüyorum, bu yüzden anlamaya çalışacağım.

"Wort" satırı, analiz ettiğiniz kalıptır, (bence) yukarıdaki "Metin" satırını dikkate almanıza gerek yoktur. Bunun yerine, deseninizdeki karakterin sıfır tabanlı konumunu soldan sağa doğru içeren ek bir satır varsayalım. tasvir desen p[] uzunluğu m 9. i 2 dayanmaktadır sağ

ayrıntılı açıklama üzerine endeksidir Her satır Ben p_i[] isim aşağıdaki gibidir:

desen işaretinin altına alt satırlarda Yukarıdaki modeldeki karakterle eşleşen tüm karakterler.

for i=1 to m do 
    search in the rows below for a subpattern where p[m-i]<>p_j[m-1] (*) 
    and p[m-i+1, ..., m-1]=p_j[m-i+1, ..., m-1] 
    index j is your shift value for shift[i] 
od 

(*) Not (dışarı geçerek burada Done): kaymıştır desen p_j çok uzakta sağ kaymıştır girdiğimde, karşılaştırma boş karakter olacaktır. Bu durumda, gerektiğinde her zaman == veya <> olduğunu varsayabilirsiniz. Her zaman mümkün olan en az j kullanın.

example of assorted steps

ben bu geç, gerçi biraz yardımcı olur.

+0

Merhaba, sınavı geçtiğim halde bu iyi ve kapsamlı bir açıklama. Çabalarınız için çok teşekkür ederim –

+1

Bunu bir sınav için kendim yapmalıydım zaman ve sorunuz, çok anlaşılabilir olmayan ders notlarımdan alabildiğim en iyi bilgilerdi. Bu, kolayca yapılabilen bir algoritma olarak görülmüyor.Gerçekten teşekkür etmeliyim: Açıklamak bana bu algoyu tamamen anlamama yardımcı oldu. Bu sınav çok iyi geçti. – marc