มีความยาวกี่คำ


9

แก้ไขเพื่อเพิ่ม : คำถามนี้ได้ตอบเป็นหลักแล้ว โปรดดูรายการบล็อกนี้สำหรับรายละเอียดเพิ่มเติม ขอบคุณทุกคนที่โพสต์ความคิดเห็นและคำตอบได้ที่นี่


คำถามดั้งเดิม

นี่เป็นคำถามที่ฉันถามใน MathOverflow เมื่อฉันถามคำถามนั้นฉันไม่รู้ด้วยซ้ำว่าชื่อของพื้นที่คณิตศาสตร์ของปัญหาของฉันคืออะไรตอนนี้ฉันค่อนข้างแน่ใจว่ามันอยู่ใน Algorithmic Combinatorics กับ Partial Words (หนังสือเล่มล่าสุดเกี่ยวกับเรื่องที่นี่ )

ฉันต้องการทำรายการคำ lตัวอักษร แต่ละคำมีความยาวอย่างแน่นอนk. ข้อตกลงคือถ้าajb อยู่ในรายการที่ไหน เป็นสัญลักษณ์แทน / ไม่สนใจแล้ว ajbไม่สามารถปรากฏอีกครั้งในรายการ (เช่นเดียวกันถือเป็นจริงถ้าa=b, หรือถ้า j=0 และด้วยเหตุนี้คำย่อยที่ต้องห้ามคือ ab.)

ตัวอย่างที่ k=4 และ l=5:

abcd
bdce
dcba <- ต้องห้ามเพราะ dc ปรากฏในบรรทัดด้านบน
aeed <- ต้องห้ามเพราะ ad ปรากฏในบรรทัดแรก

วรรณกรรมเกี่ยวกับ "คำบางคำที่หลีกเลี่ยงได้" ที่ฉันได้พบนั้นล้วน แต่ไร้สาระ - ในที่สุดรูปแบบคำบางคำนั้นไม่สามารถหลีกเลี่ยงได้หากขนาดของคำมีขนาดใหญ่พอ ฉันต้องการค้นหาทฤษฎีบทดังกล่าวรุ่นสุดท้าย ดังนั้นคำถาม:

ได้รับคำบางส่วนของรูปแบบ ajb ในตัวอักษรของ l ตัวอักษรมีความยาวเท่าใด k หลีกเลี่ยงมันและพวกมันสามารถผลิตได้อย่างชัดเจนในเวลาพหุนามหรือไม่?

ฉันไม่คาดหวังว่าคำถามข้างต้นจะยากและหากไม่มีความละเอียดอ่อนฉันหายไปฉันสามารถคำนวณได้ด้วยตนเอง เหตุผลที่แท้จริงที่ฉันโพสต์ในเว็บไซต์นี้เป็นเพราะฉันจำเป็นต้องรู้มากขึ้นเกี่ยวกับคุณสมบัติของรายการคำดังกล่าวสำหรับใบสมัครของฉันดังนั้นฉันหวังว่าจะมีคนตอบคำถามติดตาม:

สิ่งนี้ได้รับการศึกษาโดยทั่วไปหรือไม่? มีกระดาษอะไรบ้างที่พิจารณาไม่ใช่แค่ว่าคำบางส่วนนั้นในที่สุดก็หลีกเลี่ยงไม่ได้ แต่ "ต้องใช้เวลานานแค่ไหน" ก่อนที่จะหลีกเลี่ยงไม่ได้?

ขอบคุณ


(1) ฉันไม่สามารถเข้าใจการโต้ตอบระหว่างคำถามแรกของคุณกับตัวอย่างที่ระบุไว้ก่อนหน้าได้ อินพุทในตัวอย่างของคุณคืออะไร? (2) ในคำถามแรกคุณใช้ k เพื่อจุดประสงค์ที่แตกต่างกันสองข้อหรือไม่
Tsuyoshi Ito

เกี่ยวกับ (2) ใช่ฉันทำผิดตอนนี้แก้ไขขอขอบคุณ
แอรอนสเตอร์ลิง

เกี่ยวกับ (1) ฉันอยากจะรู้ว่า "ฉันเหลือพื้นที่เหลืออยู่เท่าใด" เมื่อคำบางส่วนปรากฏขึ้น แต่ใช่คำถามจริงคือวิธีสร้างรายการเช่นเดียวกับที่ปรากฏในตัวอย่าง ดังนั้นอินพุตจะเป็นค่าของk และ lและจำนวนคำที่ต้องการสร้างในรายการซึ่งทั้งหมดมี "การหลีกเลี่ยงการแสดงคุณสมบัติคำบางส่วนก่อนหน้านี้"
แอรอนสเตอร์ลิง

2
@Aaron ฉันไม่รู้ว่าแอปพลิเคชั่นที่ดีที่สุดของคุณคืออะไร แต่ Davenport-Schinzel sequences (และ generalisations) ถามถึงความยาวสูงสุดของสตริงที่ไม่มีรูปแบบการทำซ้ำโดยเฉพาะ มันเป็นความคิดที่เกี่ยวข้อง
Suresh Venkat

1
Seth Pettie ได้ศึกษาภาพรวมที่น่าสนใจบางอย่างเพื่อห้ามใช้เมทริกซ์ย่อยเช่นกัน
Suresh Venkat

คำตอบ:


4

นี่เป็นกรณีพิเศษ: จำนวนคำไบนารีของความยาว k อย่างที่ไม่มีคนสองคนปรากฏต่อเนื่องกัน F(k+3)ที่ไหน F(n) คือ nth หมายเลขฟีโบนักชี (เริ่มต้นด้วย F(1)=1,F(2)=1) หลักฐานผ่านทางตัวแทน Zeckendorf

แก้ไข: เราสามารถขยายเคสพิเศษเริ่มต้นนี้เป็นเคสพิเศษที่ใหญ่กว่าเล็กน้อยของ a0a. พิจารณาสตริงที่มีความยาวk มากกว่าตัวอักษรขนาด l+1 เช่นว่าจดหมาย aไม่ปรากฏสองครั้งติดต่อกัน ปล่อยf(k)เป็นจำนวนของสตริงดังกล่าว (ซึ่งเราจะเรียกว่า "ถูกต้อง") เราอ้างว่า:

f(k)=lf(k1)+lf(k2)
f(0)=1,f(1)=l+1
สัญชาตญาณคือเราสามารถสร้างความยาวของสตริงที่ถูกต้อง k โดย a) ติดกับส่วนใดส่วนหนึ่งของ l ตัวอักษรที่ไม่ใช่ a เป็นสตริงที่มีความยาวที่ถูกต้อง k1หรือ b) ติดกับจดหมาย a และจดหมายอื่น ๆ นอกจาก a เป็นสตริงที่มีความยาวที่ถูกต้อง k2.

คุณสามารถตรวจสอบว่าต่อไปนี้เป็นรูปแบบปิดสำหรับการเกิดซ้ำข้างต้น: ที่เราเข้าใจเมื่อ n

f(k)=i=0k(k+1ii)lki
(ni)=0i>n

แก้ไข # 2: Let 's เคาะออกอีกหนึ่งกรณี - เป็นข เราจะเรียกสตริงมากกว่าอักษรองค์ประกอบที่ไม่ได้มี substring "ถูกต้อง" และปล่อยให้แสดงว่าชุดของสตริงที่ถูกต้องของความยาวkนอกจากนี้ให้มีกำหนดที่จะเป็นส่วนหนึ่งของประกอบด้วยสตริงที่เริ่มต้นด้วยและจะเป็นผู้ที่ไม่ได้เริ่มต้นด้วยการขสุดท้ายให้,,.0b,ablabSkkTkSkbUkbf(k)=|Sk|g(k)=|Tk|h(k)=|Uk|

เราสังเกตว่าและ L ต่อไปเราสรุปการเกิดซ้ำดังต่อไปนี้: มาครั้งแรกจากความจริงที่ว่าการเพิ่มจะเริ่มต้นขององค์ประกอบของการใด ๆผลิตองค์ประกอบของ1} ที่สองมาจากการสังเกตว่าเราสามารถสร้างองค์ประกอบของโดยการเพิ่มตัวละครใด ๆ แต่ไปที่ด้านหน้าขององค์ประกอบใด ๆ ของหรือโดยการเพิ่มตัวละครใด ๆ แต่หรือที่ด้านหน้าขององค์ประกอบใด ๆ ในT_kg(0)=0,h(0)=1,f(0)=1g(1)=1,h(1)=l1,f(1)=l

g(k+1)=f(k)h(k+1)=(l1)h(k)+(l2)g(k)
bSkTk+1Uk+1bUkabTk

ต่อไปเราจัดเรียงสมการเกิดซ้ำเพื่อให้ได้รับ:

f(k+1)=g(k+1)+h(k+1)=f(k)+(l1)h(k)+(l2)g(k)=f(k)+(l1)f(k)g(k)=lf(k)f(k1)

เราจะได้รับการแก้ปัญหาการปิดฟอร์มค่อนข้างทึบเกิดซ้ำนี้โดยสิรอบ bit กับสิ่งที่ฟังก์ชั่นการสร้างหรือถ้าเราขี้เกียจกำลังมุ่งหน้าตรงไปยังWolfram Alpha อย่างไรก็ตามด้วย googling เล็กน้อยและ poking รอบในOEISเราพบว่าเรามี: โดยที่คือ Chebyshev พหุนามชนิดที่สอง (!) .

f(k)=Uk(l/2)
Ukkth

น่าสนใจมากขอบคุณ
แอรอนสเตอร์ลิง

2

วิธีการที่แตกต่างกันโดยสิ้นเชิงสำหรับคำถามแรกใช้คำตอบสำหรับคำถามล่าสุดเกี่ยวกับการสร้างคำในภาษาปกติ : มันพอเพียงที่จะใช้อัลกอริทึมเหล่านี้สำหรับความยาวในภาษาปกติที่เป็นตัวอักษรkΣaΣjbΣΣ


ขอบคุณ ฉันสงสัยว่าอาจจะมีการเชื่อมต่อและคำตอบของคุณที่นี่ให้ฉันผลักดันฉันต้องดูเอกสารอ้างอิงที่นั่นและหนึ่งในนั้นแน่นอนแก้ปัญหาที่ฉันกำลังพิจารณา
แอรอนสเตอร์ลิง

0

อัปเดต: คำตอบนี้ไม่ถูกต้อง :

สมมติว่าได้รับการแก้ไขเราสามารถนับจำนวนของวิธีการรูปแบบสามารถจับคู่: แรกสัญลักษณ์สามารถจับคู่ในตำแหน่งบางและเรามีความเป็นไปได้ก่อนที่จะถึงจุดนั้นระหว่างและและสำหรับส่วนที่เหลือของสตริงจึงรวมเคส ตามที่ Tsuyoshi Ito ระบุไว้ในความคิดเห็นการนับนี้ไม่ใช่จำนวนคำที่ตรงกับjajba1ikj1li1ljablkji1

i=1kj1li1ljlkji1=(kj1)lk2
ajbเนื่องจากคำเดียวสามารถจับคู่รูปแบบเดียวกันได้หลายวิธี ยกตัวอย่างเช่นจะถูกจับคู่สามครั้งใน ,สองครั้งในและสองครั้งในAABBเราสามารถลองนับจำนวนวิธีการจับคู่รูปแบบหลายครั้งและแสดงการแสดงออก "รวม - ยกเว้น" แต่รูปแบบวิธีที่อาจทับซ้อนกันทำให้มันยาวเกินไปaaaaaaababababaabb

สำหรับคำถามแรกภายใต้ความเข้าใจที่ว่าไม่ได้รับการแก้ไขนั่นคือเราต้องการหลีกเลี่ยงการฝังคำ :jab

  • ทั้งสัญลักษณ์แรกที่ไม่เคยปรากฏที่บัญชีสำหรับคำที่เป็นไปได้a(l1)k
  • หรือปรากฏเป็นครั้งแรกในบางตำแหน่งจากนั้นเราไม่สามารถใช้ในส่วนที่เหลือของคำ: มีตัวเลือกสำหรับปัจจัยที่สูงถึงและตัวเลือกสำหรับส่วนที่เหลือให้รวมคำที่เป็นไปได้ ไม่ว่าจะไม่เกี่ยวข้องหรือไม่a1ikb(l1)i1a(l1)kii=1k(l1)i1(l1)ki=k(l1)k1a=b

สำหรับคำถามที่สองฉันไม่มีอะไรจะแนะนำมากนัก มีความสัมพันธ์กับคำว่า embeddings แต่ผลลัพธ์ที่ฉันรู้เกี่ยวกับลำดับที่ไม่ถูกต้องสำหรับเลมม่าของฮิกแมนไม่ได้ใช้ทันที


ขอบคุณมาก Sylvain แม้ว่าฉันจะไม่คิดว่ามันค่อนข้างถูก เราสามารถใช้ภายหลังในคำถ้าปรากฏ เราไม่สามารถใช้หากมีตัวอักษรตรงระหว่างและหากปรากฏขึ้นก่อนหน้านี้ บางทีฉันอาจเข้าใจผิดเรื่องของคุณ babjabajb
Aaron Sterling

ขออภัยฉันไม่แน่ใจว่าได้รับการแก้ไขหรือไม่ ฉันได้แก้ไขคำตอบด้วยการแก้ไขเช่นกัน jj
Sylvain

1
ฉันไม่คิดว่าเคส j คงที่ถูกต้อง ตัวอย่างเช่นถ้า k = 4 และ j = 1 คำว่า aabb จะถูกลบออกสองครั้ง ฉันยังไม่ได้อ่านกรณีที่ไม่คงที่
Tsuyoshi Ito

@Tsuyoshi Ito: ถูกต้องไม่มีการจับคู่ที่ไม่เหมือนใครในกรณีนี้
Sylvain

โปรดทำเครื่องหมายคำตอบที่ไม่ถูกต้องเช่น
Tsuyoshi Ito
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.