fbpx
วิกิพีเดีย

ขั้นตอนวิธีบอยเออร์–มัวร์–ฮอร์สพูล

การจับคู่สตริงแบบฮัวส์ปัวร์

การจับคู่สตริงแบบฮัวส์ปัวร์ หรือ Boyer-Moore-Horspool เป็นอัลกอริทึมที่ใช้ในการจับคู่สตริง (String Matching) ด้วยการเปรียบเทียบ pattern จากทางด้านขวาไปด้านซ้าย มีการปรับปรุงมาจาก Boyer Moore โดยเลือกใช้ Bad-Charactor เฉพาะ Last occurrence (การเกิดขึ้นครั้งสุดท้าย)

การเลื่อนตำแหน่ง

จะมีการสร้าง Bad Match Table โดย

จำนวนครั้งที่เลื่อน = ความยาวของ Pattern - ตำแหน่งของตัวอักษร - 1

ตัวอย่างของการทำงาน

Text : [a, b, a, b, a, b, c, a, c]

Pattern : [b, a, c, c, a]

เนื่องจากตัวที่ไม่ตรงกันกับ Text คือ c และ มี a ปรากฏใน Pattern จึงทำการเลื่อนตำแหน่งให้ a ใน Patern ตรงกับ a ใน Text โดยมีจำนวนครั้งการเลื่อน = 5 - 1 - 1 = 3

Text : [a, b, a, b, a, b, c]

Pattern : [b, a, c, c, a]

ความซับซ้อนของการทำงาน

Worst-case จะเป็นกรณีที่มีการเลื่อนของตัวอักษรถัดไปน้อย จะมีตวามซับซ้อนเป็น O(nm)

Best-case จะคล้ายกับของ Boyer-Moore ซึ่งก็คือ หากไม่มีตัวอักษรอยู่เลย จะส่งผลให้เกิดการเปลี่ยนแปลงด้วยความยาวของ pattern (m) จะมีความซับซ้อนเป็น O(n/m)

Code Python ของ การจับคู่สตริงแบบฮัวส์ปัวร์

def horspool(text,pattern): len_text = len(text) len_pattern = len(pattern) results = [] if len_pattern>len_text or len_text==0 or len_pattern==0: return results table = {index: len_pattern for index in range(256)} for index, char in enumerate(pattern): table[ord(char)] = len_pattern - index - 1 index = 0 while index <= len_text - len_pattern: skip = 0 text_part = text[index:index + len_pattern][::-1] for index2, current_char in enumerate(text_part): if pattern[len_pattern - index2 - 1] != current_char: skip = table[ord(current_char)] break else: results.append(index) skip = 1 index += skip return results 

แหล่งอ้างอิง

kagan94 Boyer Moore Horspool algorithm[ลิงก์เสีย] ค้นหาเมื่อ 25 มีนาคม 2561

Nelson Rush BOYER-MOORE-HORSPOOL STRING SEARCHING ค้นหาเมื่อ 28 มีนาคม 2561

mtu Space and Time Tradeoffs ค้นหาเมื่อ 28 มีนาคม 2561

นตอนว, บอยเออร, วร, ฮอร, สพ, เน, อหา, การจ, บค, สตร, งแบบฮ, วส, วร, การเล, อนตำแหน, วอย, างของการทำงาน, ความซ, บซ, อนของการทำงาน, code, python, ของ, การจ, บค, สตร, งแบบฮ, วส, วร, แหล, งอ, างอ, งการจ, บค, สตร, งแบบฮ, วส, วร, แก, ไขการจ, บค, สตร, งแบบฮ, วส, วร, . enuxha 1 karcbkhustringaebbhwspwr 1 1 kareluxntaaehnng 1 2 twxyangkhxngkarthangan 1 3 khwamsbsxnkhxngkarthangan 1 4 Code Python khxng karcbkhustringaebbhwspwr 2 aehlngxangxingkarcbkhustringaebbhwspwr aekikhkarcbkhustringaebbhwspwr hrux Boyer Moore Horspool epnxlkxrithumthiichinkarcbkhustring String Matching dwykarepriybethiyb pattern cakthangdankhwaipdansay mikarprbprungmacak Boyer Moore odyeluxkich Bad Charactor echphaa Last occurrence karekidkhunkhrngsudthay kareluxntaaehnng aekikh camikarsrang Bad Match Table odycanwnkhrngthieluxn khwamyawkhxng Pattern taaehnngkhxngtwxksr 1 twxyangkhxngkarthangan aekikh Text a b a b a b c a c Pattern b a c c a enuxngcaktwthiimtrngknkb Text khux c aela mi a praktin Pattern cungthakareluxntaaehnngih a in Patern trngkb a in Text odymicanwnkhrngkareluxn 5 1 1 3Text a b a b a b c Pattern b a c c a khwamsbsxnkhxngkarthangan aekikh Worst case caepnkrnithimikareluxnkhxngtwxksrthdipnxy camitwamsbsxnepn O nm Best case cakhlaykbkhxng Boyer Moore sungkkhux hakimmitwxksrxyuely casngphlihekidkarepliynaeplngdwykhwamyawkhxng pattern m camikhwamsbsxnepn O n m Code Python khxng karcbkhustringaebbhwspwr aekikh def horspool text pattern len text len text len pattern len pattern results if len pattern gt len text or len text 0 or len pattern 0 return results table index len pattern for index in range 256 for index char in enumerate pattern table ord char len pattern index 1 index 0 while index lt len text len pattern skip 0 text part text index index len pattern 1 for index2 current char in enumerate text part if pattern len pattern index2 1 current char skip table ord current char break else results append index skip 1 index skip return resultsaehlngxangxing aekikhkagan94 Boyer Moore Horspool algorithm lingkesiy khnhaemux 25 minakhm 2561Nelson Rush BOYER MOORE HORSPOOL STRING SEARCHING khnhaemux 28 minakhm 2561mtu Space and Time Tradeoffs khnhaemux 28 minakhm 2561ekhathungcak https th wikipedia org w index php title khntxnwithibxyexxr mwr hxrsphul amp oldid 9617481, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม