ฉันได้สร้างการใช้ DIFF เพื่อเปรียบเทียบการแก้ไขเอกสารในที่ทำงาน มันขึ้นอยู่กับมี O (ND) ความแตกต่างขั้นตอนวิธีการและรูปแบบของมัน
สิ่งหนึ่งที่มีความสำคัญคือการบันทึกรายการการเปลี่ยนแปลงและตีความให้เป็นข้อความที่มนุษย์อ่านได้ ในขณะที่อัลกอริทึมในปัจจุบันมีประสิทธิภาพมากมันก็มากจนยากที่จะขยาย
คำถามสั้น ๆ
ฉันคิดถึงการพยายามใช้ A * และฮิวริสติกที่เพิ่มบทลงโทษสำหรับ "การเปลี่ยน" แนวคิดที่จะทำให้เรียบโดยไม่จำเป็น "เพิ่มลบเพิ่มลบเพิ่มลบ" เพื่อให้ง่ายต่อการแยกวิเคราะห์เป็นสิ่งที่มนุษย์สามารถอ่านได้ โดยทั่วไปเปลี่ยนปัญหาเส้นทางที่สั้นที่สุดของฉันให้เป็นปัญหาเส้นทางที่ง่ายที่สุด
และแน่นอนไม่สร้างผลลัพธ์ที่ "ลบทุกอย่างเพิ่มทุกอย่าง " เสมอ
เสียงนี้สมเหตุสมผลหรือไม่
มีความสำคัญสำหรับการใช้ฮิวริสติกในการนำ DIFF ไปใช้หรือไม่? ฮิวริสติกคืออะไร?
ปัญหา:
หากมีการลบประโยคยาวและประโยคยาวอื่นถูกลบออก แต่พวกเขาแบ่งปันอย่างน้อยหนึ่งคำให้พูดว่า "with" การออกจากคำทั่วไปเพียงอย่างเดียว (ไม่ใช่ทั้งการเพิ่มและการลบ) จะเป็นการสร้างเส้นทางที่สั้นที่สุด อย่างไรก็ตามนี่เป็นเพียงแค่ทำให้งงงวยบริบทของการเปลี่ยนแปลงกับมนุษย์พยายามอ่านพิมพ์จากการเปลี่ยนแปลง
ตัวอย่างด้วย DIFF ปัจจุบัน:
- ข้อความเก่า: สะอาด: Powerwash และเป่าให้แห้งด้วยอากาศในร้าน
- ข้อความใหม่: ล้าง: เช็ดด้วยอะซิโตนและผ้าสำลีฟรี
- เปลี่ยนรายการบันทึกย่อ:
- เปลี่ยน "Powerwash แล้วเป่าให้แห้ง" เป็น "Wipe with acetone"
- เปลี่ยน "ซื้ออากาศ" เป็น "อะซิโตนและผ้าสำลีฟรี"
หมายเหตุ: ใช้ "Change" แทน "ลบ" shop air "เพิ่ม" acetone ""
อย่างที่คุณเห็นบันทึกย่อที่สองสูญเสียบริบททั้งหมดและโดยที่ยังไม่ได้ดูชุดข้อความแบบเก่าและใหม่ที่คุณไม่เข้าใจว่ามันหมายถึงอะไร
หมายเหตุเกี่ยวกับเครื่องหมายวรรคตอน:
ฉันมีเครื่องหมายวรรคตอนคั่นเป็น "คำ" แยกเพื่อที่ฉันจะได้รับ
- เพิ่ม "("
แทน
- เปลี่ยน "ซ่อมแซม" เป็น "(ซ่อม"
เพราะสิ่งนี้น่ารังเกียจ อย่างไรก็ตามนั่นหมายความว่าหากมีแม้แต่เครื่องหมายจุลภาคในข้อความทั้งสอง (ตรงข้ามกับคำว่า "กับ" ในตัวอย่างก่อนหน้า) สิ่งเดียวกันจะเกิดขึ้น
ทางออกที่เป็นไปได้:
ฉันคิดว่าฉันสามารถใช้อัลกอริทึมการค้นหาพา ธ ที่แตกต่างกันแทนซึ่งทำให้ฉันมีความยืดหยุ่นในการเพิ่มน้ำหนักให้กับ "พา ธ " การเปลี่ยนแปลงที่แตกต่างกันซึ่งอาจเหมาะสมกับคนมากขึ้น บางทีฉันอาจทำให้การเดินทางไปยังโหนดที่มีเครื่องหมายวรรคตอนมีน้ำหนักน้อย (ไม่แน่ใจว่าสิ่งนี้จะส่งผลกระทบต่อสิ่งอื่น)
จากนั้นฉันจะได้รับตัวอย่างก่อนหน้าเพื่อแสดงรายการต่อไปนี้:
- เปลี่ยนรายการบันทึกย่อ:
- เปลี่ยน "Powerwash แล้วเป่าให้แห้งด้วยอากาศในร้าน" เป็น "เช็ดด้วยอะซิโตนและผ้าสำลีฟรี"
ดู! ชัดเจนมากขึ้น!
ฉันรู้ว่าฉันจะได้รับความนิยมในการแสดงและฉันอาจต้องทำการปรับปรุงครั้งใหญ่ในโปรแกรมของฉัน แต่มันสำคัญกว่าที่จะได้ผลลัพธ์สุดท้ายที่ฉันต้องการ
บรรทัดล่างสุด:
อีกครั้งมีความสำคัญสำหรับการใช้ฮิวริสติกในการนำ DIFF ไปใช้และมันคืออะไร
ความคิดอื่น ๆ? การลงทุนในเวลาที่เหมาะสม? ความคิดอื่น ๆ ? ขั้นตอนวิธีอื่น ๆ ?
ขอบคุณล่วงหน้า!
แก้ไข:
ฉันพยายามชี้แจง / ทำให้คำถามของฉันเป็นของแข็งและทำให้คำถามของฉันเป็นแบบทั่วไปเพื่อเพิ่มการวิเคราะห์พฤติกรรมในอัลกอริทึมของฉันแทนที่จะใช้ A * โดยพื้นฐานแล้วสิ่งเดียวกันในตัวอย่างนี้ แต่ฉันก็ยังคิดอย่างแม่นยำมากขึ้นในตอนนี้ โพสต์นี้ลึกซึ้ง