คำถามติดแท็ก string-matching

1
ราบิน – คาร์ป vs คาร์ป - ราบิน
บรรณาธิการที่ชาญฉลาดคนอื่น ๆ ที่ Wikipedia ปฏิเสธคำขอของฉันที่จะย้ายบทความ Wikipedia เกี่ยวกับอัลกอริทึม Rabin – Karpไปยังสิ่งที่ฉันคิดว่าควรเรียกว่าอัลกอริทึม Karp – Rabin บนพื้นฐานที่ชื่อ Rabin – Karp ใช้บ่อยกว่า ( false หากตัวเลขของ Google เป็นไปตามนั้นหรือว่ามันจะออกมาดังขึ้น (จริง ๆ ) คำสั่งชื่อสิ่งพิมพ์ต้นฉบับคือ Karp และ Rabin ตามลำดับตัวอักษรตามปกติสำหรับเอกสารทางทฤษฎีซึ่งเป็นสาเหตุที่ฉันขอย้าย ผู้สนับสนุนหลักของการสั่งซื้อชื่อ Rabin – Karp คือ Cormen – Leiserson – Rivest – Stein บทนำตำราเรียนอัลกอริทึม ผลลัพธ์ของ Wikipedia ไม่น่าจะเปลี่ยนแปลงยกเว้นหลักฐานใหม่ที่สำคัญไม่ทางใดก็ทางหนึ่งและดูเหมือนว่าไม่น่าเป็นไปได้ที่ราบินหรือคาร์ปใส่ใจเครดิตมากกว่า แต่ตอนนี้ฉันอยากรู้อยากเห็น: ผู้อ่านคนใดจำประวัติศาสตร์นี้ได้หรือไม่ คำอธิบายว่าทำไม …

8
คำนวณระยะทาง Levenshtein อย่างรวดเร็ว
ให้ฐานข้อมูลขนาดใหญ่ของคำที่อนุญาต (เรียงตามตัวอักษร) และคำค้นหาคำจากฐานข้อมูลที่ใกล้เคียงที่สุดกับคำที่กำหนดในแง่ของระยะทาง Levenshtein แน่นอนว่าวิธีการที่ไร้เดียงสานั้นคือการคำนวณระยะทางเลเวนเทนไทน์ระหว่างคำที่กำหนดและคำทั้งหมดในพจนานุกรม (เราสามารถทำการค้นหาแบบไบนารี่ในฐานข้อมูลก่อนที่จะคำนวณระยะทาง) ฉันสงสัยว่ามีวิธีแก้ไขปัญหานี้ที่มีประสิทธิภาพมากกว่านี้หรือไม่ บางทีฮิวริสติกบางตัวที่ช่วยให้เราลดจำนวนคำที่จะค้นหาหรือปรับให้เหมาะสมกับอัลกอริทึมระยะทางเลเวนเทน ลิงค์ไปยังเอกสารในเรื่องยินดีต้อนรับ

2
การจับคู่รูปแบบ n- มิติ
อะไรคือผลลัพธ์ที่ทราบกันดีในการค้นหา subarray n-มิติที่แน่นอนภายในอาร์เรย์ n-Dim? ใน 1D มันเป็นเพียงปัญหาการจับคู่สตริง KMP ทำในเวลาเชิงเส้น ใน 2D บทความนี้แสดงให้เห็นว่าสามารถทำได้ในเวลาเชิงเส้นพร้อมพื้นที่เพิ่มเติมเล็กน้อย สามารถแก้ไขปัญหานี้ในกรณีที่เป็นเส้นตรงเวลาที่แย่ที่สุดสำหรับมิติข้อมูลคงที่ได้หรือไม่?

2
แก้ไขระยะทางด้วยการเคลื่อนย้าย
แรงจูงใจ:ผู้เขียนร่วมแก้ไขต้นฉบับและฉันต้องการดูบทสรุปที่ชัดเจนของการแก้ไข เครื่องมือที่เหมือนกัน "diff" ทั้งหมดมีแนวโน้มที่จะไร้ประโยชน์ถ้าคุณทั้งคู่ย้ายข้อความไปมา (เช่นการจัดโครงสร้างใหม่) และทำการแก้ไขในท้องถิ่น มันยากจริง ๆ ที่จะทำให้ถูกต้อง? คำจำกัดความ:ฉันต้องการค้นหาระยะทางแก้ไขขั้นต่ำซึ่งการดำเนินการที่อนุญาตคือ: การดำเนินการ "ถูก": เพิ่ม / เปลี่ยน / ลบอักขระเดียว (การดำเนินการ Levenshtein ปกติ), "แพง": การดำเนินการ: ย้ายซับสตริงไปยังตำแหน่งใหม่ ( abcd↦acbdabcd↦acbdabcd \mapsto acbdสำหรับสตริงใด ๆaaa , bbb , ccc , ddd ) รับสองสายxxxและyyyและจำนวนเต็มkkkและKKKฉันต้องการที่จะแก้ปัญหาต่อไปนี้: คุณสามารถแปลงxxxเป็นyyyโดยใช้การดำเนินการkkkราคาถูกที่สุดและการดำเนินการที่แพงที่สุดKKKไหม คำถาม: ปัญหานี้มีชื่อหรือไม่? (ดูเหมือนคำถามที่เป็นมาตรฐานมากในบริบทของการจัดเรียงลำดับ) มันยากไหม ถ้าเป็นเรื่องยากมันเป็นพารามิเตอร์คงที่เวไนยกับเป็นพารามิเตอร์?KKK มีขั้นตอนวิธีการประมาณที่มีประสิทธิภาพหรือไม่? (เช่นค้นหาวิธีแก้ปัญหาที่มีการดำเนินการราคาถูกมากที่สุดและ2 Kราคาแพงหากมีวิธีแก้ปัญหาที่มีการดำเนินงานk cheap และKแพง)2k2k2k2K2K2KkkkKKK ฉันพยายามดูสตริงตัวชี้วัดที่แสดงรายการใน Wikipediaแต่ไม่มีสิ่งใดที่ถูกต้อง

1
ครอบคลุมสตริงโดย palindromes
รับสาย , palindrome coverเป็นลำดับp 1 p 2 ⋯ p mของคำp iเช่นที่p 1 p 2 ⋯ p m = wและเช่นนั้นp iแต่ละตัวคือ palindrome .w=σ1σ2…σnw=σ1σ2…σnw=\sigma_1\sigma_2\ldots\sigma_np1p2⋯pmp1p2⋯pmp_1p_2\cdots p_mpipip_ip1p2⋯pm=wp1p2⋯pm=wp_1p_2\cdots p_m = wpipip_i มันยากแค่ไหนในการหาขนาดฝาครอบ palindrome ที่น้อยที่สุด? (ดูเหมือนว่าจะทำได้โดยการเขียนโปรแกรมแบบไดนามิก แต่ฉันไม่แน่ใจว่ามันทำงานได้) ปัญหาจะยากขึ้นหรือไม่หากได้รับเนื่องจากอินพุตยังเป็นถูกผูกไว้กับความยาว palindrome แต่ละอันbbb พิจารณาอัลกอริธึมโลภอย่างง่ายซึ่งใช้เวลานานที่สุดที่จะเริ่มต้นที่ตำแหน่งปัจจุบัน ตัวอย่างเช่นถ้าแล้วมันจะเอาท์พุท( 121 ) ⋅ ( 33 ) ⋅ ( 1 ) ⋅ ( 2 )ในขณะที่ฝาครอบที่ดีที่สุดคือ( …

1
คำฟีโบนัชชี
ฉันเจอปัญหาต่อไปนี้ในตำราเรียนภาษาอัลกอริทึมเก่าของฉัน แต่น่าเสียดายที่ไม่มีคำแนะนำหรือวิธีแก้ปัญหา "เรากำหนดคำ Fibonacci เป็น , F 1 = b , F n + 2 = F n F n + 1โดยที่aและbเป็นตัวอักษรทั่วไปวิธีในสตริงที่กำหนด ค้นหาคำย่อยของ Fibonacci ที่ยาวที่สุดในเวลาเชิงเส้นหรือไม่ "F0=aF0=aF_{0}=aF1=bF1=bF_{1}=bFn+2=FnFn+1Fn+2=FnFn+1F_{n+2}=F_{n}F_{n+1}aaabbb ฉันรู้วิธีแก้ปัญหาในเวลากำลังสอง แต่ไม่สามารถลดลงเป็นเส้นตรง ใครช่วยชี้ทางให้ฉันได้?

2
ความซับซ้อนของการทำให้เป็นเนื้อเดียวกันสตริง
แรงจูงใจ : ในขณะที่พัฒนาเครื่องมือสำหรับการกำหนดเวอร์ชันของข้อมูลเราลงเอยด้วยการค้นหาอัลกอริธึมสำหรับ "diff" ที่เป็นจำนวนเต็มสองชุดโดยการหาลำดับของการแปลงที่นำจำนวนเต็มหนึ่งชุดมาเป็นชุด เราสามารถที่จะลดปัญหาว่าปัญหาที่เกิดขึ้นเป็นธรรมชาติมากต่อไปนี้ที่ดูเหมือนว่าจะมีการเชื่อมต่อกับการแก้ไขระยะทาง, การจัดกลุ่มโดยการแลกเปลี่ยนและพาร์ทิชันสตริงต่ำสุดที่พบบ่อย ปัญหา : เราได้รับสตริงคือลำดับของตัวอักษรและเป้าหมายของเราคือ ทำให้เป็นเนื้อเดียวกันในราคาต่ำสุด นั่นคือเราต้องการลำดับการจัดเรียงใหม่เพื่อให้ตัวอักษรทั้งหมดที่เหมือนกันอยู่ติดกัน การดำเนินการเดียวที่ได้รับอนุญาตคือการเลือกลำดับของตัวอักษรที่เหมือนกันและย้ายลำดับที่ใดก็ได้และนั่นทำให้ฉันเสียค่าใช้จ่าย 1 หน่วย ความช่วยเหลือใด ๆ ที่บ่งบอกถึงความซับซ้อนของปัญหานี้จะได้รับการชื่นชมมาก! ตัวอย่าง : aabcdab: อินพุต bcd aa ab: หลังจากย้ายaa ตัวแรกไปยังตำแหน่งหลังจาก "d" b bcdaaa: หลังจากย้ายbต่อท้ายไปยังตำแหน่งแรก เนื่องจากสตริงผลลัพธ์เป็นเนื้อเดียวกันเราจึงมีราคาเท่ากับ 2 โปรดทราบว่าเราไม่ได้ถูก จำกัด แต่อย่างใดเกี่ยวกับผลลัพธ์: ตราบใดที่มันเป็นเนื้อเดียวกันเราไม่จำเป็นต้องตรวจสอบคำสั่งซื้อใด ๆ

4
สามารถใช้ต้นไม้ต่อท้ายเพื่อค้นหาสตริงย่อยทั่วไปได้หรือไม่?
ฉันพยายามใช้ต้นไม้ต่อท้ายเพื่อเปรียบเทียบลำดับของสตริง ฉันได้พบการใช้งาน / ทฤษฎีสำหรับปัญหาสตริงย่อยทั่วไปที่ยาวที่สุดโดยใช้ต้นไม้ต่อท้าย อย่างไรก็ตามสิ่งที่ฉันกำลังมองหาคือการอภิปรายปัญหาที่เกี่ยวข้อง - "สตริงย่อยทั่วไป" โดยเฉพาะฉันมีปัญหาที่ฉันต้องการค้นหาสตริงย่อยทั่วไปที่ยาวที่สุดก่อนจากนั้นค้นหาสตริงย่อยทั่วไปที่ยาวที่สุดถัดไปที่ไม่รวมดัชนี lcs ที่พบแล้วและจนถึงความยาวต่ำสุด ปัญหานี้แก้ไขได้หรือไม่โดยการสร้างทรีต่อท้าย Generalized (GST) เพียงครั้งเดียวสำหรับสองซีเควนซ์ ฉันรู้ว่ามันสามารถแก้ไขได้โดยการสร้าง GST ซ้ำหลายครั้งหลังจากการค้นหาและการถอด LCS ซ้ำทุกครั้ง แต่ฉันสงสัยว่าถ้าฉันขาดเล่ห์เหลี่ยมเรียบร้อยซึ่งใน GST ถูกสร้างขึ้นเพียงครั้งเดียว

3
การจับคู่รูปแบบการเปลี่ยนแปลงในสตริง
รูปแบบการเปลี่ยนแปลงที่ตรงกับข้อตกลงกับปัญหาประเภทต่อไปนี้: ได้รับพีชคณิตในและในกับไม่มีsubsequenceของความยาวซึ่งเป็นธาตุสั่งตาม ?S n σ S เมตรเมตร≤ n πππ\piSnSnS_nσσ\sigmaSม.SmS_mม. ≤ nm≤nm\leq nππ\pi m σττ\tauม.mmσσ\sigma ตัวอย่างเช่นถ้าและดังนั้นการเรียงลำดับตรงกันมา อย่างที่คุณเห็นเราไม่ได้มองที่นี่สำหรับการจับคู่ที่แน่นอน แต่สำหรับบางสิ่งที่ "ดูเหมือน" รูปแบบที่ระบุσ = ⟨ 2 1 3 ⟩ 3 1 4 σπ= ⟨ 3 1 5 4 2 8 6 7 ⟩ π=⟨3 1 5 4 2 8 6 7⟩\pi=\langle 3\ 1\ 5\ …

1
การจับคู่รูปแบบโดยไม่สนใจ: หลายรูปแบบ
กระดาษ SODA 2 หน้าของ Kalaiให้อัลกอริธึมที่ง่ายและมีประสิทธิภาพสำหรับการจับคู่รูปแบบโดยไม่ต้องสนใจ (wildcard ที่ตรงกับอักขระหนึ่งตัว) ในสาระสำคัญมันเป็นเรื่องง่ายเหมือนการโน้มน้าวใจ แต่จะเกิดอะไรขึ้นหากเราค้นหาลวดลายหลาย ๆรูปแบบโดยไม่สนใจ? เราสามารถยังคงแก้ปัญหาด้วยเทคนิคที่อิงกับ FFT ได้หรือไม่?

1
การตัดสินใจว่าสตริง wildcard ถูกจับคู่โดยสตริง wildcard อื่นในชุดหรือไม่
นี่คือปัญหาที่ทำให้ฉันดักฟังมาระยะหนึ่งแล้ว สมมุติว่าสตริงเป็นลำดับ 1 และ 0 และสตริงตัวแทนคือ 1 และ 0 สตริงและสตริงตัวแทนทั้งหมดมีความยาวเท่ากัน นี่คือสัญลักษณ์ตัวแทน UNIX มาตรฐาน 10 ?? 1 การแข่งขัน 10011, 10111, ฯลฯ -? ตรงกับ 1 หรือ 0 ในตำแหน่งนั้น ถ้าโวลต์โวลต์v และ WWw เป็นสตริงไวด์การ์ดจากนั้นเราเขียน v ≤ wโวลต์≤Wv \leq w ถ้าทุกสายจับคู่ด้วย โวลต์โวลต์v ถูกจับคู่โดย WWw. ปัญหา : ได้รับชุดSSS ของสายอักขระตัวแทนและแบบสอบถาม vโวลต์v (เช่นสตริงตัวแทน) ซึ่งมีอยู่ w∈SW∈Sw \in S ดังนั้น …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.