อัลกอริธึม boyer-moore
หลักมีความโดดเด่นด้วย
ซึ่งจะช่วยทำให้การเปรียบเทียบจากขวาไปซ้าย;
preprocessing ขั้นตอนใน O (ม. Six Sigma )เวลาและพื้นที่ความซับซ้อน;
การค้นหาขั้นตอนใน O (นาที)ในความซับซ้อน;
3 n ข้อความลักษณะการเปรียบเทียบในกรณีที่เลวร้ายที่สุดในการค้นหาที่ไม่ใช่เป็นระยะๆรูปแบบ;
o ( N / m ) ประสิทธิภาพ .
คำอธิบายอัลกอริธึม boyer-moore ที่ได้รับการพิจารณาให้เป็นส่วนมากอัลกอริธึมสตริงที่ตรงกันอย่างมี ประสิทธิภาพ ในแอปพลิเคชันตามปกติ เวอร์ชันที่ง่ายของมันหรือทั้งหมดอัลกอริธึมมักมีใช้ในข้อความบรรณาธิการสำหรับ"การค้นหา"และ"แทน"คำสั่ง.
ที่อัลกอริธึมการสแกนที่ตัวอักษรของรูปแบบจากขวาไปซ้ายเริ่มด้วยเคเบิ้ล Main power หนึ่ง.ในกรณีที่ไม่ตรงกัน(หรือตรงกับสมบรูณ์แบบที่มีรูปแบบทั้งหมด)ที่ใช้ฟังก์ชั่นการทำงานเป็นสอง precomputed เพื่อเปลี่ยนหน้าต่างที่อยู่ทางด้านขวา ฟังก์ชันการทำงานทั้งสองนี้มีการเรียกว่าการเปลี่ยนแปลงที่ดี - ส่วนต่อท้าย(นอกจากนั้นยังเปลี่ยนที่ตรงกันเรียกว่าและการเปลี่ยนแปลงไม่ดี - ตัวอักษร(เรียกอีกอย่างหนึ่งว่าการเปลี่ยนแปลงที่เกิด)..
จะต้องเป็นผู้รับผิดชอบที่ไม่ตรงกันว่าจะเกิดขึ้นระหว่างที่ตัวอักษร X [ i ]= A ของรูปแบบและลักษณะ Y [ผม J ]= b ของข้อความในระหว่างที่มีความพยายามที่ตำแหน่ง J .
แล้ว, x [ i 1 ...ม. - 1 ]= Y [ผม J 1 ... J M - 1 ]= U และ X [ i ] neq Y [ผม J ] ที่ดี - ต่อท้ายด้วยการเปลี่ยนแปลงประกอบไปด้วยในการปรับเปลี่ยนส่วน Y [ผม J 1 ... J M - 1 ]= x [ i 1 ...ม. - 1 ]ด้วยเคเบิ้ล Main power เกิดใน X ที่มีคริปท์นำหน้าด้วยตัวอักษรแตกต่างจาก x [ i ](ดูรูปที่ 13.1 )
รูปรูปที่ 13.1 13.1 . ที่ดี - ต่อท้ายด้วยการเปลี่ยนแปลง, U อีกครั้ง - เกิดขึ้นคริปท์นำหน้าด้วยตัวอักษร C แตกต่างจากที่.
หากมีไม่มีเช่นตลาด,การเปลี่ยนแปลงประกอบไปด้วยให้มากที่สุดส่วนต่อท้าย v ของ Y [ผม J 1 ... J M - 1 ]ด้วยที่ตรงกับหน้าของ X (ดูรูปที่ 13.2 )..
รูปที่ 13.2
รูปที่ 13.2 . การเปลี่ยนแปลงที่ดี - ส่วนต่อท้ายเท่านั้นที่ต่อท้ายอีกครั้งของ U - เกิดขึ้นใน X .
การเปลี่ยนแปลงไม่ดี - ชุดอักขระที่ประกอบไปด้วยในการจัดแนวข้อความ Y [ J i ]ด้วยเหตุการณ์ของเคเบิ้ล Main power ใน X [ 0 ...ม. - 2 ] (ดูรูปที่ 13.3 )
รูปที่ 13.3
รูปที่ 13.3 . การเปลี่ยนแปลงไม่ดี - อักขระที่เกิดขึ้นใน X .
หาก Y [ J i ]ไม่ได้เกิดขึ้นในรูปแบบที่ x ไม่มีการเกิดขึ้นของ X ใน Y สามารถรวมถึง y [ J ผม]และปลายทางด้านซ้ายของหน้าต่างที่อยู่ในแนวเดียวกับตัวอักษรในทันทีหลังจาก Y [ J i ]คือ Y [ผม J 1 ](ดูรูปที่ 13.4 )..
รูปที่ 13.4
รูปที่ 13.4 . B การเปลี่ยนแปลงไม่ดี - อักขระที่ไม่ได้เกิดขึ้นใน X .
บันทึกไว้ด้วยว่าการย้ายไม่ดี - ลักษณะอันโดดเด่นที่สามารถลบดังนั้นสำหรับการเปลี่ยนหน้าต่างที่ใช้อัลกอริธึม boyer-moore สูงสุดได้ระหว่างการเปลี่ยนแปลงที่ดี - ส่วนต่อท้าย SHIFT และไม่ถูกต้องอักขระ ฟังก์ชันเพิ่มเติมอย่างเป็นทางการสองการย้ายที่ถูกกำหนดไว้ดังนี้.
ที่ดี - ต่อท้ายฟังก์ชันการย้ายจะถูกจัดเก็บอยู่ในโต๊ะ bmgs ของขนาดม. 1 .
ปล่อยให้เรากำหนดเงื่อนไขสอง:
CS (ผม, s ):สำหรับแต่ละ K ที่ผม< K ม., s geq K หรือ X [ K - S ]= x [ K ]และ
ตามมาตรฐานร่วมกัน( I , s ):หาก< I จากนั้น x [ i - S ] neq x [ i ]
แล้วสำหรับ 0 leq I <ม.: bmgs [ i 1 ]=นาที{ s > 0 : CS (ผม, s )และให้ความร่วมมือ(ผม, S )ค้างไว้, time , long }
และเรากำหนด bmgs [ 0 ]เป็นที่ความยาวของช่วงของ x .ที่มารวมกันที่โต๊ะของ bmgs ใช้ที่โต๊ะออนซ์กำหนดไว้ดังนี้: 1 leq I < m ,ออนซ์[ i ]=สูงสุด{ K : X [ i - K 1 ...ฉัน]= x [ม. - K ...ม. - 1 ]}
ที่ไม่ดี - อักขระฟังก์ชันการย้ายจะถูกจัดเก็บอยู่ในโต๊ะ bmbc ขนาดซิกมา. สำหรับ C ใน Six Sigma bmbc [ c ]=นาที{ผม 1 ม. I < leq - 1 และ X [ม. - 1 - i ]= C }ถ้าการเชื่อมต่อระหว่าง C จะเกิดขึ้นใน X ม.หรือมิเช่นนั้นแล้ว.
โต๊ะ bmbc และ bmgs สามารถ precomputed ในเวลา O (ม. Six Sigma )ก่อนขั้นตอนการค้นหาที่พิเศษและต้องใช้พื้นที่ว่างใน O (ม. Six Sigma ) ความซับซ้อนในขั้นตอนการค้นหาที่มีในพีชคณิตที่มีกำลังสองแต่ที่มากที่สุด 3 การเปรียบเทียบตัวอักษรข้อความ n ได้เมื่อทำการค้นหาสำหรับรูปแบบที่ไม่ใช่เป็นระยะๆ บนตัวอักษรขนาดใหญ่(มีให้มีความยาวพอเหมาะที่ทำให้มีรูปแบบที่)อัลกอริธึมที่ได้อย่างรวดเร็วเป็นอย่างมากเมื่อทำการค้นหาสำหรับ AM - 1 b ใน bn ,ที่ทำให้อัลกอริธึมเท่านั้น O ( N /ม.)การเปรียบเทียบ,ซึ่งเป็นขั้นต่ำไม่ว่าในกรณีใดๆสำหรับสตริง - อัลกอริธึมที่ตรงกันในรุ่นที่รูปแบบเท่านั้นคือ preprocessed .
ซึ่งจะช่วยให้รหัสเป็นโมฆะ prebmbc (ปัดกวาดบ้าน* X , INT m , INT bmbc []){
Int ผม;
สำหรับ( I = 0 ;ฉัน< asize ; I )
bmbc [ i ]= m ;
สำหรับ( I = 0 ;ฉัน<ม. - 1 ; I )
bmbc [ x [ i ]]= m - I - 1 ;
}
เป็นโมฆะคำลงท้ายดังกล่าว(ปัดกวาดบ้าน* X , INT m ,INT ‐*ออนซ์){
Int F , g , i ;
ออนซ์[ม. - 1 ]= m ;
G =ม. - 1 ;
สำหรับ( I = m - 2 ;ฉัน>= 0 ; - - ฉัน){
หาก( I > G &&ออนซ์[ i m - 1 - F ]< I - G )
ออนซ์[ i ]=ออนซ์[ i M - 1 - F ];
อื่น{หาก( I < G )
G =ฉัน;
F =ฉัน;
( G >= 0 && x [ G ]== x [ G ม. - 1 - F ]:)
- - G ;
ออนซ์[ i ]= F - G ;
}}}
เป็นโมฆะ prebmgs (ปัดกวาดบ้าน* X , INT M , INT bmgs []){
Int I , J ,ออนซ์[ xsize ];
คำลงท้ายดังกล่าว( x , M ,ออนซ์);
( I = 0 ;ฉัน< ม.;I )
bmgs [ i ]= m ;
j = 0 ;
สำหรับ( I = m - 1 ;ฉัน>= 0 ; - - I )
หาก(ออนซ์[ i ]== I 1 )
สำหรับ(; J <ม. - 1 - I ; J )
หาก( bmgs [ J ]== m )
bmgs [ J ]= m - 1 - I ;
สำหรับ( I = 0 ;<= m - 2 ; I )
bmgs [ม. - 1 - ออนซ์[ i ]]= m - 1 - I ;
}
เป็นโมฆะเบอร์มิวดา(ปัดกวาดบ้าน* X , INT M ,ปัดกวาดบ้าน* Y , INT N ){
Int I , J , bmgs [ xsize ], bmbc [ asize ];
/* preprocessing */
prebmgs ( x , M , bmgs );
prebmbc ( x , M , bmbc );
/*การค้นหา*/
j = 0 ;
ในขณะที่( J <= N - m ){
สำหรับ( I = m - 1 ; I >= 0 && x [ i ]== Y [ผม J ]; - - I );
หาก( I < 0 ){
เอาต์พุต( J );
j = bmgs [ 0 ];
อื่น}
j =สูงสุด( MAX )( bmgs [ i ], bmbc [ y [ผม J ]] - ม. 1 i );
}}
ออกตัวอย่างเช่น
preprocessing phase
boyer-moore bmbc และ bmgs โต๊ะ
bmbc bmgs และโต๊ะโดยใช้อัลกอริธึม boyer-moore
การค้นหา ระยะ
การอ้างอิง
aho , a . V , 1990 ,อัลกอริธึมในการค้นหาในรูปแบบสตริง.ในคู่มือของทางทฤษฎีวิทยาศาสตร์คอมพิวเตอร์,ระดับเสียง,อัลกอริธึมและความซับซ้อน, J .รถตู้ว่า‘ Oranje Leeuwen เอ๊ด,บทที่ 5 , pp 255-300 , elsevier , Amsterdam .
aoe , J . - I , 1994 ,คอมพิวเตอร์อัลกอริธึม:สตริงรูปแบบที่ตรงกันกลยุทธ์, IEEE คอมพิวเตอร์สังคมกด.
baase , S .,รถตู้ปราศรัย, A ., 1999 ,คอมพิวเตอร์อัลกอริธึม:การแนะนำตัวการออกแบบและการวิเคราะห์, 3 Edition ,บทที่ 11 , pp ) - ),การเผยแพร่ addison-wesley บริษัท.
Baeza - yates . R ., navarro . G .,ริเบย์โร - do Canto มีชื่อเสียงในด้านสถานบันเทิง B ., 1999 ,การทำดัชนีและการค้นหา,ในที่ทันสมัย,การเรียกข้อมูลจากข้อมูล,บทที่ 8 , pp 191-228 , addison-wesley .
beauquier , D ., berstel , J ., chrétienne , p . p ., 1992 , éléments d ' algorithmique ,บทที่ 10 , pp 337-377 , masson , Paris .
boyer . R . S .,มัวร์ j.s. , 1977 ,ได้อย่างรวดเร็วสตริงการค้นหาอัลกอริธึม. การสื่อสารของพล.อ.อ.ได้. 20762-772 ..
โคล. R . 1994 นอกสนามกันแน่นบนความซับซ้อนของอัลกอริธึมที่ตรงกับรูปแบบ boyer-moore ที่สยามวารสารในการใช้งานคอมพิวเตอร์ 23 ( 5 ): 1075-1091 ..
cormen T . H . C . E . leiserson rivest . R . L . 1990 . อัลกอริธึมการแนะนำตัวบท 34 PP 853-885 , MIT ,กด.
crochemore m . 1997 . สตริงที่แน่นอน Serial ปิด - line การค้นหาในรูปแบบการจับคู่อัลกอริธึม A apostolico ล่ะและ Z . galil บทที่ 1PP 1-53 Oxford University Press .
crochemore . M . C . 1999 hancart รูปแบบที่ตรงกันในสตริงในอัลกอริธึมทฤษฎีและการคำนวณคู่มือ m . J . atallah ล่ะบทที่ 11 : PP 11-1 11-28 CRC ให้กด, Inc . Boca Raton , Fl .
crochemore lecroq m . T . 1996 และข้อความที่ตรงกับรูปแบบอัลกอริธึมการบีบอัดใน CRC คู่มือคอมพิวเตอร์ด้านวิศวกรรมและวิทยาศาสตร์ Tucker A .ล่ะบทที่ 8 : PP 162-202ประกอบด้วย CRC กด, Inc . Boca Raton , Fl .
crochemore m . rytter W 1994 อัลกอริธึมข้อความ Oxford University Press .
gonnet . G . H . Baeza - yates ปืนใหญ่ 1991 . หนังสือคู่มือของอัลกอริธึมและข้อมูลโครงสร้างในปาสคาลและ C 2 บทที่ 7 , pp 251-288 addison-wesley เผยแพร่บริษัท.
, Goodrich Landing Gear เวลากรีนิช tamassia . R . 1998 ข้อมูลโครงสร้างและอัลกอริธึมในเกาะชวาบทที่ 11 : PP 441-467 จอห์น wiley &คน.
gusfield D .ปี 1997 อัลกอริธึมที่สตริงต้นไม้และซีเควนซ์ของชีววิทยาวิทยาศาสตร์คอมพิวเตอร์และประมวลผลมหาวิทยาลัย Cambridge กด.
hancart C . 1993 . วิเคราะห์ exacte เอ็ด EN Moyenne d ' algorithmes de recherche d 'ลักษณะของความโดดเด่นของสหประชาชาติ dans UN texte ดร. D .นิพนธ์มหาวิทยาลัย Paris 7 ฝรั่งเศส.
knuth D . E .เทศบาลเมืองแอตแลนตา(สถานี JR )ก.ศป. H .แพร V . R . 1977 ที่ตรงกับรูปแบบได้อย่างรวดเร็วในสตริงสยามวารสารสำหรับการใช้งานคอมพิวเตอร์ 6 ( 1 )323-350 ..
lecroq T 1992 ร่วม recherches de ดร. D .นิพนธ์, University of Orlé ,ฝรั่งเศส.
lecroq , T , 1995 ,ผลการทดลองในสตริงที่ตรงกับอัลกอริธึม,ซอฟต์แวร์การฝึกการ&ประสบการณ์ 25 ( 7 ): 727-765 ..
sedgewick ,. R ., 1988 ,อัลกอริธึม,บท 19 , pp 277-292 , addison-wesley เผยแพร่บริษัท.
sedgewick , R , 1988 ,อัลกอริธึมใน C ,บท 19 , addison-wesley การพิมพ์บริษัท.
สตีเฟน,อัลกอริธึม g.a. 1994 สตริงการค้นหาโลกวิทยาศาสตร์.
วัตสัน B . W . 1995 ดร. taxonomies และชุดเครื่องมือต่างๆอย่างสม่ำเสมอ ภาษา อัลกอริธึม D .นิพนธ์ Eindhoven , University of Technology ,เนเธอร์แลนด์,.
wirth N . 1986 อัลกอริธึม&ข้อมูลโครงสร้างบทที่ 1 , pp 17-72 prentice-hall . algorithmesmajnot
Turbo boyer-moore ดังนั้นไร้เดียงสา algorithmcontents
ถัดไป turbo - เบอร์มิวดาอัลกอริธึมขึ้น esmaj ก่อนหน้าไม่ได้ไร้เดียงสาอัลกอริ ธึม
อี - เมล์{คริสเตียน. charras ชาว. lecroq }@ laposte.net
การแปล กรุณารอสักครู่..