การค้นหาระยะห่างระหว่างชื่อพหุนามสองแบบ (แสดงเป็นต้นไม้)


20

เพื่อนร่วมงานที่ทำงานเกี่ยวกับการเขียนโปรแกรมทางพันธุกรรมถามคำถามต่อไปนี้ ก่อนอื่นฉันพยายามแก้มันโดยใช้วิธีโลภ แต่จากความคิดที่สองฉันพบตัวอย่างของอัลกอริทึมโลภ ดังนั้นฉันคิดว่ามันควรค่าแก่การกล่าวถึงที่นี่


พิจารณาพหุนามสองอันซึ่งแสดงโดยต้นไม้แสดงออกของพวกเขา ตัวอย่างเช่นx32x+1และx2+4มีภาพประกอบด้านล่าง:

กฎ:

  1. แต่ละโหนดเป็นชื่อตัวแปร ( x,y,z, ), ตัวเลขหรือการดำเนินการ (+, -, ×)
  2. การสำรวจเส้นทางตามลำดับของต้นไม้ควรส่งผลให้พหุนามถูกต้อง
  3. โหนดการดำเนินการมีระดับ 2 โหนดอื่น ๆ มีระดับ -0 โหนดทั้งหมดมีระดับที่ 1 (ยกเว้นรูทซึ่งมีระดับนอกเป็น 0)

บนโหนด N ของแผนผังกำหนดการดำเนินการพื้นฐานดังนี้:

  1. x×
  2. การดำเนินการขั้นพื้นฐานสามารถสร้างแผนภูมินิพจน์ด้านบนของ N (ดูตัวอย่างด้านล่าง)

ค่าใช้จ่ายของการดำเนินการพื้นฐานของประเภท 1คือ 1 ค่าใช้จ่ายสำหรับประเภท 2เท่ากับจำนวนการดำเนินงาน {+, -, ×} ในต้นไม้นิพจน์ที่สร้างขึ้นใหม่

ตัวอย่างสำหรับชนิดที่ 2:ค่าใช้จ่ายของการดำเนินการพื้นฐานต่อไปนี้คือ 2 เนื่องจากโครงสร้างนิพจน์ที่สร้างอยู่ด้านบนของโหนด N ใช้การดำเนินการสองอย่าง (- และ×)

ให้ T1 และ T2 เป็นต้นไม้แสดงออกสองต้นที่แทนพหุนาม กำหนดระยะทางของ T1 และ T2 ดังนี้: ค่าใช้จ่ายขั้นต่ำของการดำเนินงานขั้นพื้นฐานสำหรับการแปลง T1 เป็น T2 โปรดทราบว่าเราไม่ต้องการให้ทรีที่แปลงแล้วมีโครงสร้างเดียวกันกับ T2 เราแค่อยากให้มันคำนวณพหุนามเดียวกับ T2 (ดูความคิดเห็นสำหรับตัวอย่าง)

ปัญหา:จาก T1 และ T2 แสดงอัลกอริทึมที่คำนวณระยะทาง

ตัวอย่างที่ 1:ให้ T1 และ T2 เป็นต้นไม้สองต้นที่แสดงในตอนต้นของโพสต์นี้ ในการแปลงต้นไม้ที่ถูกต้องเป็นต้นไม้ด้านซ้ายเราสามารถสร้างต้นไม้ที่มีราคา 3 อยู่ด้านบนของ×และเปลี่ยน 4 เป็น 1 (ราคารวมคือ 4)

x4x4+4x3+6x2+4x+1x(x+1)4x4x36x24x


2
หากไม่อนุญาตการดำเนินการ "ลบ" แสดงว่าระยะทางไม่ใช่ระยะทาง ตัวอย่างเช่น: tree T1 = (x * x) +4 ไม่สามารถแปลงเป็น T2 = x แต่ T2 สามารถแปลงเป็น T1 add (* x) และจากนั้น (+4) ที่ด้านบนของ x มันโอเคไหม หรือคุณควรกำหนดระยะทางเป็นการดำเนินการขั้นต่ำที่จำเป็นในการแปลง T1 เป็น T2 หรือ T2 เป็น T1
Marzio De Biasi

4
ค่าใช้จ่ายเท่ากับ 0 หากและถ้าหากทั้งสองสูตรคณิตศาสตร์ (ไม่หาร) ที่เป็นตัวแทนของพหุนามเดียวกัน ถ้าฉันจำได้อย่างถูกต้องนี่เป็นปัญหาทั่วไปใน coRP (โดยการสุ่มมอบหมาย) ซึ่งไม่รู้ว่าอยู่ใน P.
Tsuyoshi Ito

4
@Tsuyoshi: โอ้ฉันเข้าใจแล้ว คุณกำลังชี้ไปที่ปัญหาการทดสอบเอกลักษณ์พหุนาม (การอ้างอิงที่ดี: [1 ] และ[2 ]) ฉันต้องคิดเกี่ยวกับเรื่องนี้ ในขณะเดียวกันข้อเสนอแนะใด ๆ ยินดีต้อนรับ
MS Dousti

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

2
@Vor: ในการกำหนดปัจจุบันอินพุต T1 เป็นต้นไม้จริงๆและอินพุต T2 เป็นพหุนามซึ่งเพิ่งเกิดขึ้นที่จะได้รับเป็นต้นไม้ในแง่ต่อไปนี้ การเปลี่ยน T1 เป็นต้นไม้อื่นซึ่งแสดงถึงพหุนามเดียวกันสามารถเปลี่ยนคำตอบโดยทั่วไปในขณะที่การเปลี่ยน T2 ด้วยวิธีที่คล้ายกันไม่ได้
Tsuyoshi Ito

คำตอบ:


10

Tree Edit Distance เป็นลักษณะทั่วไปของระยะทางแก้ไขสตริง ระยะห่างระหว่างสองต้นคือจำนวนขั้นต่ำของการแทรกโหนด \ deletions \ และ relabels ที่จำเป็นในการเปลี่ยนต้นไม้ต้นหนึ่งให้เป็นอีกต้นหนึ่ง (เมื่อเราลบโหนด v, children ของ v กลายเป็น child of parent (v)) ปัญหาคือปัญหา NP-hard เมื่อต้นไม้ไม่ได้เรียงลำดับ แต่เมื่อถูกสั่ง (เช่นมีคำสั่งจากซ้ายไปขวาในหมู่พี่น้อง) ปัญหาจะแก้ไขได้ในเวลา O (n ^ 3) (เหมือนในกระดาษที่ Sadeq ที่กล่าวถึง) แบบสำรวจที่ดีที่อธิบายสิ่งนี้: http://portal.acm.org/citation.cfm?id=1085283


1
ขอบคุณ Aviv มันจะดีถ้าคุณรวมคำตอบของคุณ (ฉันคิดว่าคุณมีปัญหาในการใช้บัญชีก่อนหน้าของคุณ) คุณสามารถใช้คำแนะนำในโพสต์นี้ ( ลิงก์นี้พิเศษ)
MS Dousti

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