แก้ไขระยะทางด้วยการเคลื่อนย้าย


13

แรงจูงใจ:ผู้เขียนร่วมแก้ไขต้นฉบับและฉันต้องการดูบทสรุปที่ชัดเจนของการแก้ไข เครื่องมือที่เหมือนกัน "diff" ทั้งหมดมีแนวโน้มที่จะไร้ประโยชน์ถ้าคุณทั้งคู่ย้ายข้อความไปมา (เช่นการจัดโครงสร้างใหม่) และทำการแก้ไขในท้องถิ่น มันยากจริง ๆ ที่จะทำให้ถูกต้อง?


คำจำกัดความ:ฉันต้องการค้นหาระยะทางแก้ไขขั้นต่ำซึ่งการดำเนินการที่อนุญาตคือ:

  • การดำเนินการ "ถูก": เพิ่ม / เปลี่ยน / ลบอักขระเดียว (การดำเนินการ Levenshtein ปกติ),

  • "แพง": การดำเนินการ: ย้ายซับสตริงไปยังตำแหน่งใหม่ ( abcdacbdสำหรับสตริงใด ๆa , b , c , d )

รับสองสายxและyและจำนวนเต็มkและKฉันต้องการที่จะแก้ปัญหาต่อไปนี้:

  • คุณสามารถแปลงxเป็นyโดยใช้การดำเนินการkราคาถูกที่สุดและการดำเนินการที่แพงที่สุดKไหม

คำถาม:

  1. ปัญหานี้มีชื่อหรือไม่? (ดูเหมือนคำถามที่เป็นมาตรฐานมากในบริบทของการจัดเรียงลำดับ)

  2. มันยากไหม

  3. ถ้าเป็นเรื่องยากมันเป็นพารามิเตอร์คงที่เวไนยกับเป็นพารามิเตอร์?K

  4. มีขั้นตอนวิธีการประมาณที่มีประสิทธิภาพหรือไม่? (เช่นค้นหาวิธีแก้ปัญหาที่มีการดำเนินการราคาถูกมากที่สุดและ2 Kราคาแพงหากมีวิธีแก้ปัญหาที่มีการดำเนินงานk cheap และKแพง)2k2KkK

ฉันพยายามดูสตริงตัวชี้วัดที่แสดงรายการใน Wikipediaแต่ไม่มีสิ่งใดที่ถูกต้อง


3
สำหรับปัญหาคือการเรียงลำดับตาม Transpositions ดูเช่นweb.cs.dal.ca/~whidden/HThesis07.pdfฉันไม่พบปัญหาของคุณ แต่ดูเหมือนว่าจะมีแรงจูงใจดีมาก k=0
Serge Gaspers

4
NP-แข็งของการเรียงลำดับจากปัญหา transpositions ได้รับการพิสูจน์ในปี 2010 เห็นการเรียงลำดับโดย transpositions เป็นเรื่องยาก
Marzio De Biasi

3
Transpositions นั้นยาก แต่การแทรกและการลบไม่ใช่ ถ้าคุณอนุญาตให้การดำเนินการที่มีราคาแพงเป็นการลบซับสตริงเองหรือการแทรกซับสตริงใด ๆ ของสตริงอื่นปัญหาควรจะค่อนข้างง่าย ระยะทางที่เกิดขึ้นจะไม่สมมาตรกัน
Jouni Sirén

ฉันอยากรู้มากขึ้นเกี่ยวกับความสามารถในการแก้ไขพารามิเตอร์คงที่ มีการค้นพบใหม่หรือไม่?
Yixin Cao

คำตอบ:


5

ตามที่แสดงความคิดเห็นโดย Serge Gaspers สำหรับปัญหาคือการเรียงลำดับโดย Transpositionsและได้รับการแนะนำโดย Bafna และ Pevzner ในปี 1995 ความแข็งของ NP ได้รับการพิสูจน์ในปี 2010 เท่านั้น ดูLaurent Bulteau กีโยม Fertin และ Irena Rusu "เรียงลำดับตาม transpositions ยาก"k=0


4

kak+ba,b0

xa+baAA[i,j]x[1i]y[1j]AdA[i1,j]A[i1,j1]A[i,j1]Ad[i1,j]A[i,j]Ad[i,j]O(1)

xAs

O(1)xO(|x|)As[i,j1]y[j]A[i,j]As[i,j]

zy[j]zAs[i,j1]xzzzy[j]xO(|z||z|)As[i,j]A[i,j|z|1]A[i,j1]zO(1)As[i,j]O(|z|)

O(min(|x||y|2,|x|2|y|))

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