สตริงย่อย

ในทฤษฎีภาษาเชิงรูปธรรมและวิทยาศาสตร์คอมพิวเตอร์สตริงย่อยคือลำดับของตัวอักษร ที่ต่อเนื่องกัน ภายในสตริงหลักตัวอย่างเช่น " the best of " เป็นสตริงย่อยของ " It was the best of times " ในทางตรงกันข้าม "It was the best of times " เป็นลำดับย่อยของ " It was the best of times " แต่ไม่ใช่สตริงย่อย
คำนำหน้าและคำต่อท้ายเป็นกรณีพิเศษของสตริงย่อย คำนำหน้าของสตริงเป็นสตริงย่อยของซึ่งเกิดขึ้นในช่วงเริ่มต้นของในทำนองเดียวกัน คำต่อท้ายของสตริงเป็นสตริงย่อยที่ปรากฏอยู่ตอนท้ายของ.
สตริงย่อยของสตริง " apple " จะเป็นดังนี้: " a ", " ap ", " app ", " appl ", " apple ", " p ", " pp ", " ppl ", " pple ", " pl ", " ple ", " l ", " le ", " e ", "" (โปรดสังเกตว่ามีสตริงว่างอยู่ตอนท้าย)
สตริงย่อย
เชือกเป็นสตริงย่อย (หรือแฟกเตอร์) [ 1 ]ของสตริงถ้ามีสตริงอยู่สองสตริงและโดยที่โดยเฉพาะอย่างยิ่ง สตริงว่างเป็นสตริงย่อยของทุกสตริง
ตัวอย่าง: สตริงเท่ากับสตริงย่อย (และลำดับย่อย) ของที่ระยะห่างสองค่าที่แตกต่างกัน:
กล้วย |||| อนา|| || อนา
การเกิดขึ้นครั้งแรกได้รับด้วยและในขณะที่การเกิดขึ้นครั้งที่สองนั้นได้มาด้วย และเป็นสตริงว่างเปล่า
สตริงย่อยของสตริงหลัก คือส่วนนำหน้าของส่วนต่อท้ายของสตริงหลัก และในทำนองเดียวกันคือ ส่วนต่อท้ายของส่วนนำหน้า ตัวอย่างเช่นnanเป็นส่วนนำหน้าของnanaซึ่งเป็นส่วนต่อท้ายของbananaถ้าเป็นสตริงย่อยของนอกจากนี้ยังเป็นลำดับย่อยซึ่งเป็นแนวคิดที่กว้างกว่า การค้นหาการปรากฏของรูปแบบที่กำหนดในสตริงที่กำหนดสามารถทำได้โดยใช้อัลกอริธึมการค้นหาสตริง การค้นหาสตริงที่ยาวที่สุดซึ่งเท่ากับสตริงย่อยของสตริงสองสตริงขึ้นไปเรียกว่าปัญหาสตริงย่อยร่วมที่ยาวที่สุดในวรรณกรรมทางคณิตศาสตร์ สตริงย่อยยังเรียกว่าคำย่อย (ในอเมริกา) หรือแฟกเตอร์ (ในยุโรป)
คำนำหน้า
เชือกเป็นคำนำหน้า[ 1 ]ของสตริงถ้ามีสตริงอยู่โดยที่คำนำหน้าที่เหมาะสมของสตริงไม่เท่ากับสตริงนั้นเอง[ 2 ]แหล่งข้อมูลบางแหล่ง[ 3 ]ยังจำกัดคำนำหน้าที่เหมาะสมไม่ให้ว่างเปล่าอีกด้วย คำนำหน้าสามารถมองได้ว่าเป็นกรณีพิเศษของสตริงย่อย
ตัวอย่าง: สตริงนี้banเท่ากับส่วนนำหน้า (และส่วนย่อยและส่วนลำดับย่อย) ของสตริงbanana:
กล้วย || ห้าม
สัญลักษณ์เซตย่อยรูปสี่เหลี่ยมบางครั้งใช้เพื่อระบุคำนำหน้า เพื่อให้แสดงว่าเป็นคำนำหน้าของนี่เป็นการกำหนดความสัมพันธ์แบบทวิภาคบนสตริง เรียกว่าความสัมพันธ์แบบพรีฟิก ซึ่งเป็น ลำดับพรีฟิกชนิดหนึ่งโดยเฉพาะ
คำต่อท้าย
เชือกเป็นคำต่อท้าย[ 1 ]ของสตริงถ้ามีสตริงอยู่โดยที่ส่วนต่อท้ายที่ถูกต้องของสตริงนั้นไม่เท่ากับตัวสตริงเอง การตีความที่แคบกว่านั้นคือ ส่วนต่อท้ายนั้นต้องไม่ว่างเปล่าด้วยคำต่อท้ายสามารถมองได้ว่าเป็นกรณีพิเศษของสตริงย่อย
ตัวอย่าง: สตริงนี้nanaเท่ากับส่วนต่อท้าย (และสตริงย่อยและลำดับย่อย) ของสตริงbanana:
กล้วย |||| นานา
โครงสร้างข้อมูล แบบ ไทร (trie)สำหรับสตริงเรียกว่าต้นไม้ส่วนต่อท้าย ( suffix tree ) ซึ่งแสดงส่วนต่อท้ายทั้งหมดของสตริงนั้น ต้นไม้ส่วนต่อท้ายมีแอปพลิเคชันมากมายในอัลกอริทึมเกี่ยวกับสตริง ส่วนอาร์เรย์ส่วนต่อท้าย ( suffix array)เป็นโครงสร้างข้อมูลที่เรียบง่ายกว่า โดยแสดงตำแหน่งเริ่มต้นของส่วนต่อท้ายตามลำดับตัวอักษร และมีแอปพลิเคชันที่คล้ายคลึงกันหลายอย่าง
ชายแดน
เส้นขอบคือส่วนต่อท้ายและส่วนนำหน้าของสตริงเดียวกัน เช่น "" คือพรมแดนของ "" (และรวมถึง "").
ซูเปอร์สตริง
ซูเปอร์สตริงของเซตจำกัดของสตริงคือสตริงเดียวที่ประกอบด้วยสตริงทุกสตริงในในรูปของสตริงย่อย ตัวอย่างเช่นเป็นซูเปอร์สตริงของ, และเป็นอันที่สั้นกว่า การรวมสมาชิกทั้งหมดของโดยเรียงลำดับตามอำเภอใจ จะได้ซูเปอร์สตริงที่ไม่สำคัญเสมอการค้นหาซูเปอร์สตริงที่มีความยาวน้อยที่สุดเท่าที่จะเป็นไปได้นั้นเป็นปัญหาที่น่าสนใจกว่า
สตริงที่ประกอบด้วยการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของชุดอักขระที่กำหนด เรียกว่าซูเปอร์เพอร์มูเทชัน (Superpermutation )
ดูเพิ่มเติม
- 1 2 3 Lothaire, M. (1997). Combinatorics on words . Cambridge: Cambridge University Press. ISBN 0-521-59924-5.
- ↑เคลลีย์, ดีน (1995). ออโตมาตาและภาษาเชิงรูปธรรม: บทนำ . ลอนดอน: เพรนติส-ฮอลล์ อินเตอร์เนชั่นแนล. ISBN 0-13-497777-7.
- ↑ Gusfield, Dan (1999) [1997]. Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology . สหรัฐอเมริกา: Cambridge University Press. ISBN 0-521-58519-8.