การแก้ Superstring อย่างแน่นอน


18

สิ่งที่เป็นที่รู้จักกันเกี่ยวกับความซับซ้อนที่แน่นอนของปัญหา superstring ที่สั้นที่สุด? สามารถแก้ไขได้เร็วกว่าO(2n)หรือไม่ มีอัลกอริทึมที่รู้จักกันดีในการแก้ปัญหา superstring ที่สั้นที่สุดโดยไม่ลดลงถึง TSP หรือไม่?

UPD: O()ยับยั้งปัจจัยพหุนาม

ปัญหา superstring ที่สั้นที่สุดคือปัญหาที่คำตอบคือสตริงที่สั้นที่สุดซึ่งมีแต่ละสตริงจากชุดของสตริงที่กำหนด คำถามนี้เกี่ยวกับการเพิ่มประสิทธิภาพการขยายตัวของปัญหา NP-hard ชื่อ Shortest Superstring (Garey and Johnson, p.228)


5
"ปัญหาเรื่องความเชื่อโชคลาง" คืออะไร?
Jeffε

ฉันหมายถึงปัญหา Superstring ที่สั้นที่สุดฉันแก้ไขมัน ขอขอบคุณ!
อเล็กซ์ Golovnev

10
ถ้าอย่างนั้นโอเคปัญหา "ปัญหาการเป็น superstring ที่สั้นที่สุด" คืออะไร ฉันสามารถนึกถึงปัญหาต่าง ๆ ที่สมควรได้รับชื่อนั้นและอีกสองสามเรื่องที่ควรจะเรียกว่า " ปัญหาการพลิกกลับที่สั้นที่สุด" แต่อาจไม่ใช่ในทางปฏิบัติ ให้บริบทกับเราหน่อยได้ไหม!
Jeff

1
ปัญหาของคุณคืออะไร เช่นหากคุณกำลังมองหาสตริงที่สั้นที่สุดในการแยกส่วนจีโนมเนื่องจากการกระจายตัวของจีโนมสร้างกราฟความกว้างของต้นไม้คุณสามารถมีอัลกอริทึมที่รวดเร็ว แต่ถ้าคุณสนใจที่เร็วกว่าอัลกอริธึมที่มีอยู่คำตอบของคุณคือ ใน TSP (เนื่องจากการลดลงอย่างง่าย) นอกจากนี้ยังมีอัลกอริทึมในกราฟความกว้างแผนภูมิต้นไม้ที่ถูก จำกัด O(2n)
Saeed

1
@AlexGolovnev ใช่คุณมีสิทธินี้เป็น ATSP แต่สำหรับกระโดด treewidth ผมคิดว่าเป็นสิ่งที่ดีที่จะเห็นcs.bme.hu/~dmarx/papers/marx-warsaw-fpt2หรือถ้าคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับพวกเขาดีเกินไปดูอัลกอริทึม ทฤษฎีบทเมตา
Saeed

คำตอบ:


5

สมมติว่าสตริงมีพหุนามยาวเป็นแล้วใช่มีอย่างน้อย2 n - Ω ( nการแก้ปัญหาเวลา เหตุผลก็คือการลดที่รู้จักกันดีจากปัญหา superstring ทั่วไปที่สั้นที่สุดถึง ATSP ที่มีน้ำหนักจำนวนเต็มขนาดพหุนามซึ่งคุณสามารถแก้ไขได้โดยการประมาณพหุนามหากคุณสามารถนับรอบมิลโตเนียนในการเขียนด้วยลายมือหลายทิศทาง ปัญหาหลังมี2n-Ω(2nΩ(n/logn)การแก้ปัญหาเวลา Björklund 20122nΩ(n/logn)

ลดลงจาก ATSP มีน้ำหนักสำหรับคู่ของจุดแต่ละU , Vเพื่อมิลวงจรนับไปดังต่อไปนี้:wuvu,v

สำหรับที่W ผลรวมเป็นขอบเขตบนของจำนวนเงินทั้งหมดของnน้ำหนักในกรณี ATSP การสร้างกราฟG Rที่คุณแทนที่แต่ละน้ำหนักW ยูวีกับR W U vโค้งจากมึงไปวีr=1,2,,wsumwsumnGrwuvrwuvuv

โดยการแก้นับรอบมิลสำหรับแต่ละคุณสามารถสร้างผ่านการแก้ไขพหุนามพหุนามΣ W รวม L = 0 L R Lกับลิตรเท่ากับจำนวนของทัวร์ TSP ในรูปแบบของกราฟเดิมของน้ำหนักลิตร ดังนั้นตำแหน่งที่เล็กที่สุดลิตรเช่นว่าลิตรเป็นที่ไม่ใช่ศูนย์แก้ปัญหาGrl=0wsumalrlalllal


ขอบคุณมาก! ฉันไม่ทราบว่าการเชื่อมต่อกับการนับรอบมิลโตเนียนนี้
Alex Golovnev

@AlexGolovnev: แต่การลดลงนั้นมากหรือน้อยกว่าเช่นใน Kohn, Gottlieb, Kohn ทำให้คุณอ้างถึงคำตอบของคุณเองหรือ มันเป็นการฝังแบบง่าย ๆ ของการหาค่าบวกต่ำสุดของจำนวนเต็ม อย่างไรก็ตามขอขอบคุณที่ทำให้ฉันรู้ว่าเอกสารฉบับต่อไปของฉันควรระบุสิ่งนี้อย่างชัดเจน
Andreas Björklund

8

ฉันได้ศึกษาปัญหาและพบผลลัพธ์บางอย่าง Shortest Common Superstring (SCS) สามารถแก้ไขได้ในเวลาด้วยพื้นที่พหุนามเท่านั้น ( Kohn, Gottlieb, Kohn ; Karp ; Bax, Franklin )2n

ค่าประมาณที่รู้จักกันดีที่สุดคือ (Paluch)21130

การประมาณการบีบอัดที่รู้จักกันดีที่สุดคือ (Paluch)34

หาก SCS สามารถประมาณค่าได้โดยปัจจัยมากกว่าตัวอักษรไบนารีก็สามารถประมาณค่าได้โดยปัจจัยαที่อยู่เหนือตัวอักษรใด ๆ ( Vassilevska-Williams )αα

SCS ไม่สามารถประมาณได้ด้วยอัตราส่วนที่ดีกว่าเว้นแต่ว่า P = NP ( Karpinski, Schmied )1.0029

การบีบอัดสูงสุดไม่สามารถประมาณได้ด้วยอัตราส่วนที่ดีกว่ายกเว้น P = NP ( Karpinski, Schmied )1.0048

ฉันจะขอบคุณสำหรับการเพิ่มเติมและข้อเสนอแนะใด ๆ


5

นี่เป็นปัญหา superstring สั้น: คุณจะได้รับสตริงs 1 , ... , s nบางตัวอักษรΣและคุณต้องการที่จะหาสตริงที่สั้นกว่าΣที่มีแต่ละs ฉันเป็น subsequence ของตัวละครต่อเนื่องเช่นสตริงย่อยns1,,snΣΣsi

เมื่อเราพูดถึงอัลกอริธึมที่แน่นอนสำหรับปัญหาการค้นหาความยาวของ superstring ที่สั้นที่สุดเทียบเท่ากับการค้นหาการบีบอัดสูงสุดCซึ่งเป็นผลรวมของการซ้อนทับสตริงทั้งหมดที่อยู่ติดกันใน superstring สุดท้ายเช่นC = i | s i | -LC .C=i|si|L

เท่าที่ฉันรู้อัลกอริทึมที่แน่นอนที่เร็วที่สุดสำหรับ superstring ที่สั้นที่สุดจะทำงานใน ( 2 n ) โดยที่nคือจำนวนสตริง นี่เป็นอัลกอริทึมการเขียนโปรแกรมแบบไดนามิกที่เรียบง่ายคล้ายกับอัลกอริทึมการเขียนโปรแกรมแบบไดนามิกสำหรับเส้นทางที่ยาวที่สุด (และปัญหาอื่น ๆ ):O2nn

For each subset of strings S and string v in S we compute the maximum compression over all superstrings over S where v is the first string appearing in the superstring, storing this as C((v,S)). We do this by first processing all subsets with only one element, and then building up the C((v,S)) values for subsets S on k strings from those on k1 strings. Specifically:

For each string u we look at all subsets S on k1 strings that don't include u and set the value for (u,uS) to the maximum over strings v in S of the sum of the maximum overlap of u with v with C((v,S)).

The final runtime is no more than O(n22n+n2l) where l is the maximum string length.

There are better algorithms if you assume that l is small, or the pairwise overlaps are small, the alphabet size is small etc, but I am not aware of any algorithm that's faster than 2n.


5
OP knows O(2n) algorithm, he asked for faster solution.
Saeed

2
as I said, I don't believe a faster solution is known.
virgi

1
@virgi, thank you very much! Your algorithm is very nice. But I think inclusion-exclusion principle gives us even O(2n)-algorithm with polynomial space for the Superstring problem. I'm really interesting in faster algorithms, may be with some constraints (small alphabet, short answer etc). Thank you very much!
Alex Golovnev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.