กลับไปหน้าบทความ

อ่าน 24 นาที

การรวม (วิทยาการคอมพิวเตอร์)

ใน ตรรกศาสตร์ และ วิทยาศาสตร์คอมพิวเตอร์ โดยเฉพาะอย่างยิ่งใน การให้เหตุผลอัตโนมัติ การ รวมกัน ( unification) เป็นกระบวนการเชิงอัลกอริทึมใน การแก้สมการ ระหว่าง นิพจน์ เชิงสัญลักษณ์...

การรวม (วิทยาการคอมพิวเตอร์)

ในตรรกศาสตร์และวิทยาศาสตร์คอมพิวเตอร์โดยเฉพาะอย่างยิ่งในการให้เหตุผลอัตโนมัติ การ รวมกัน ( unification)เป็นกระบวนการเชิงอัลกอริทึมในการแก้สมการระหว่างนิพจน์ เชิงสัญลักษณ์ ซึ่งแต่ละนิพจน์มีรูปแบบด้านซ้าย = ด้านขวาตัวอย่างเช่น เมื่อใช้x , y , zเป็นตัวแปร และให้fเป็นฟังก์ชันที่ไม่มีการ ตีความ ชุด สมการ เดี่ยว { f (1, y ) = f ( x ,2) } เป็นปัญหาการรวมกันลำดับที่หนึ่งเชิงไวยากรณ์ ซึ่งมีการแทนที่ { x 1, y ↦ 2 } เป็นคำตอบเดียว

ข้อตกลงต่างๆ แตกต่างกันไปในเรื่องค่าที่ตัวแปรอาจมีได้และนิพจน์ใดที่ถือว่าเทียบเท่ากัน ในการรวมเชิงไวยากรณ์ลำดับที่หนึ่ง ตัวแปรจะครอบคลุมเทอมลำดับที่หนึ่งและความเทียบเท่าเป็นไปตามไวยากรณ์ การรวมแบบนี้มีคำตอบ "ที่ดีที่สุด" เพียงหนึ่งเดียว และใช้ในการเขียนโปรแกรมเชิงตรรกะและ การใช้งาน ระบบประเภท ของภาษาโปรแกรม โดยเฉพาะอย่างยิ่งใน อัลกอริธึม การอนุมานประเภทตามHindley–Milnerในการรวมลำดับที่สูงกว่า ซึ่งอาจจำกัดเฉพาะการรวมรูปแบบลำดับที่สูงกว่า เทอมอาจรวมถึงนิพจน์แลมบ์ดา และความเทียบเท่าขึ้นอยู่กับการลดเบต้า การรวมแบบนี้ใช้ในตัวช่วยพิสูจน์และการเขียนโปรแกรมเชิงตรรกะลำดับที่สูงกว่า เช่นIsabelle , TwelfและlambdaPrologสุดท้าย ในการรวมเชิงความหมายหรือ E-unification ความเท่าเทียมกันขึ้นอยู่กับความรู้พื้นฐานและตัวแปรจะครอบคลุมโดเมนที่หลากหลาย การรวมแบบนี้ใช้ในตัวแก้ปัญหา SMT อัลกอริ ธึ มการเขียนเทอมใหม่และการวิเคราะห์ โปรโตคอลการเข้ารหัสลับ

คำจำกัดความอย่างเป็นทางการ

ปัญหาการรวมสมการคือเซตจำกัดE ={ l 1r 1 , ..., l nr n }ของสมการที่ต้องแก้ โดยที่l i , r iอยู่ในเซตของพจน์หรือนิพจน์ขึ้นอยู่กับว่านิพจน์หรือพจน์ใดที่อนุญาตให้ปรากฏในเซตสมการหรือปัญหาการรวมสมการ และนิพจน์ใดที่ถือว่าเท่ากัน จึงมีการแบ่งกรอบการรวมสมการออกเป็นหลายแบบ หากอนุญาตให้ใช้ตัวแปรลำดับสูงกว่า นั่นคือตัวแปรที่แทนฟังก์ชันในนิพจน์ กระบวนการนี้เรียกว่าการรวมสมการลำดับสูงกว่ามิฉะนั้น เรียกว่า การรวมสมการลำดับแรกหากต้องการคำตอบที่ทำให้ทั้งสองข้างของแต่ละสมการเท่ากันอย่างแท้จริง กระบวนการนี้เรียกว่าการรวมสมการเชิงไวยากรณ์หรือแบบอิสระมิฉะนั้นเรียกว่าการรวม สมการ เชิงความหมายหรือ แบบสมการ หรือ การรวมสมการ Eหรือการรวมสมการโมดูลัสทฤษฎี

ถ้าด้านขวาของแต่ละสมการปิด (ไม่มีตัวแปรอิสระ) ปัญหาจะเรียกว่าการจับคู่ (รูปแบบ) ด้านซ้าย (ที่มีตัวแปร) ของแต่ละสมการเรียกว่ารูปแบบ[ 1 ]

ข้อกำหนดเบื้องต้น

ในทางทฤษฎีแล้ว แนวทางการรวมเป็นหนึ่งเดียวตั้งอยู่บนพื้นฐานของสิ่งต่อไปนี้

  • เซตของตัวแปรอนันต์สำหรับการรวมลำดับที่สูงขึ้น เป็นเรื่องสะดวกที่จะเลือกตัวแปรที่ไม่ซ้ำกันจากเซตของตัวแปรที่ถูกผูกไว้กับเทอมแลมบ์ดา
  • เซตของเทอมต่างๆที่มีคุณสมบัติว่าสำหรับการรวมแบบอันดับแรกมักจะเป็นเซตของเทอมอันดับแรก (เทอมที่สร้างขึ้นจากสัญลักษณ์ตัวแปรและฟังก์ชัน) สำหรับการรวมแบบอันดับสูงกว่าจะประกอบด้วยเทอมอันดับแรกและเทอมแลมบ์ดา (เทอมที่มีตัวแปรอันดับสูงกว่าบางตัว)
  • การจับคู่โดยกำหนดเซตของตัวแปรอิสระที่ปรากฏใน เทอม นั้น ให้กับแต่ละเทอม
  • ทฤษฎีหรือความสัมพันธ์สมมูล บน ซึ่งระบุว่าเทอมใดถือว่าเท่ากัน สำหรับการรวม E อันดับแรกสะท้อนถึงความรู้พื้นฐานเกี่ยวกับสัญลักษณ์ฟังก์ชันบางอย่าง ตัวอย่างเช่น ถ้าถือว่าสลับที่ได้ถ้าเป็นผลมาจากโดยการสลับอาร์กิวเมนต์ของในบาง (อาจจะทุก) ครั้ง[หมายเหตุ 1 ]ในกรณีทั่วไปที่ไม่มีความรู้พื้นฐานเลย จะมีเพียงเทอมที่เหมือนกันตามตัวอักษรหรือตามไวยากรณ์เท่านั้นที่ถือว่าเท่ากัน ในกรณีนี้ ≡ เรียกว่าทฤษฎีอิสระ (เพราะเป็นวัตถุอิสระ ) ทฤษฎีว่างเปล่า (เพราะเซตของประโยค สมการ หรือความรู้พื้นฐานนั้นว่างเปล่า) ทฤษฎีของฟังก์ชันที่ไม่ได้ ตีความ (เพราะการรวมทำบนเทอม ที่ไม่ได้ตีความ ) หรือทฤษฎีของตัวสร้าง (เพราะสัญลักษณ์ฟังก์ชันทั้งหมดสร้างเทอมข้อมูลขึ้นมาแทนที่จะดำเนินการกับเทอมเหล่านั้น) สำหรับการรวมอันดับสูงกว่า โดยปกติแล้วถ้าและสมมูลกันแบบอัลฟา

ตัวอย่างเช่น ปัญหาการรวมลำดับที่หนึ่งทางไวยากรณ์ { y = cons (2, y ) } ไม่มีคำตอบบนเซตของ เทอม จำกัดอย่างไรก็ตาม มันมีคำตอบเดียว { ycons (2, cons (2, cons (2,...))) } บนเซตของ เทอม ต้นไม้อนันต์ ในทำนองเดียวกัน ปัญหาการรวมลำดับที่หนึ่งทางความหมาย { ax = xa } มีการแทนที่แต่ละแบบในรูปแบบ { xa ⋅...⋅ a } เป็นคำตอบในเซมิกรุป กล่าว คือ ถ้า (⋅) ถือว่า มีคุณสมบัติ การสลับที่ แต่ปัญหาเดียวกันนี้ เมื่อมองในกลุ่มอาเบเลียนซึ่ง (⋅) ถือว่า มีคุณสมบัติ การสลับที่ เช่นกัน การแทนที่ใดๆ ก็ตามจะเป็นคำตอบได้

ตัวอย่างหนึ่งของการรวมลำดับที่สูงกว่าคือ เซตที่มีสมาชิกเดียว { a = y ( x ) } ซึ่งเป็นปัญหาการรวมลำดับที่สองเชิงไวยากรณ์ เนื่องจากyเป็นตัวแปรฟังก์ชัน วิธีแก้ปัญหาหนึ่งคือ { xa , y ↦ ( ฟังก์ชันเอกลักษณ์ ) }; อีกวิธีหนึ่งคือ { y ↦ ( ฟังก์ชันคงที่ที่แมปแต่ละค่าไปยังa ), x(ค่าใดๆ) }

การทดแทน

การแทนที่ (Substitution)คือการจับคู่จากตัวแปรไปยังเทอม สัญลักษณ์ { x ↦ h ( a , y ), z ↦ b } หมายถึงการจับคู่ที่แมปตัวแปรแต่ละตัวไปยังเทอมสำหรับ x > y และตัวแปรอื่นๆ ไปยังตัวมันเอง ตัวแปรทั้งสองต้องแตกต่างกันเป็นคู่ๆการนำการแทนที่ไปใช้กับเทอมจะเขียนใน รูป แบบ postfixเป็น { x ↦ h ( a , y ), z ↦ b } ซึ่งหมายถึงการแทนที่ตัวแปรทุกตัว ในเทอมด้วย ตัวแปรนั้น พร้อมกันผลลัพธ์ของการนำการแทนที่ไปใช้กับเทอมเรียกว่าอินสแตนซ์ของเทอมนั้นตัวอย่างลำดับแรกคือ การนำการแทนที่{ xh ( a , y ), zb } ไปใช้ กับเทอม z = z( a, y)

ผลผลิต  

การสรุปโดยทั่วไป การเฉพาะทาง

ถ้าเทอมหนึ่งมีตัวอย่างที่เทียบเท่ากับเทอมอีกเทอมหนึ่งนั่นคือ ถ้าสำหรับการแทนที่บางอย่าง เทอมหนึ่งเรียกว่าทั่วไปกว่า เทอมอีก เทอมหนึ่ง และ เทอมอีก เทอมหนึ่งเรียกว่าเฉพาะเจาะจงกว่าเทอมอีกเทอมหนึ่ง หรือถูกรวมไว้ในเทอมอีกเทอมหนึ่งตัวอย่างเช่น เทอม หนึ่งทั่วไปกว่า เทอมอีกเทอมหนึ่ง ถ้า ⊕ เป็นเทอมสลับที่ได้เนื่องจากเทอมอีกเทอม หนึ่งคือ ทั่วไปกว่าเทอมอีกเทอมหนึ่ง

ถ้า ≡ คือความเหมือนกันทางไวยากรณ์ของคำศัพท์ คำศัพท์หนึ่งอาจมีความทั่วไปและเฉพาะเจาะจงกว่าอีกคำหนึ่งได้ก็ต่อเมื่อคำศัพท์ทั้งสองแตกต่างกันเพียงแค่ชื่อตัวแปรเท่านั้น ไม่ใช่โครงสร้างทางไวยากรณ์ คำศัพท์ดังกล่าวเรียกว่าตัวแปรหรือการเปลี่ยนชื่อของกันและกัน ตัวอย่างเช่น เป็นตัวแปรของ เนื่องจาก และ อย่างไรก็ตามไม่ใช่ตัวแปรของ เนื่องจากไม่มีการแทนที่ใดที่จะเปลี่ยนคำศัพท์หลังให้เป็นคำศัพท์แรก ได้ดังนั้นคำศัพท์หลังจึงมีความเฉพาะเจาะจงกว่าคำศัพท์แรกอย่างถูกต้อง

สำหรับค่าใดๆ ก็ตามเทอมหนึ่งอาจมีความทั่วไปมากกว่าและมีความเฉพาะเจาะจงมากกว่าเทอมที่มีโครงสร้างแตกต่างกัน ตัวอย่างเช่น ถ้า ⊕ เป็นเทอมเอกลักษณ์ (idempotent ) นั่นคือ ถ้า ⊕ เป็นจริงเสมอเทอมนั้นจะมีความทั่วไปมากกว่า⊕ [หมายเหตุ 2 ]และในทางกลับกัน[หมายเหตุ 3 ]แม้ว่า⊕ และ ⊕ จะมีโครงสร้างที่แตกต่างกันก็ตาม

การแทนที่พิเศษกว่าหรือถูกรวมโดยการแทนที่ถ้าถูกรวมโดยสำหรับแต่ละเทอมเรายังกล่าวอีกว่ามีความทั่วไปมากกว่าในทางที่เป็นทางการมากขึ้น ให้ใช้เซตอนันต์ที่ไม่ว่างเปล่าของตัวแปรเสริม โดยที่ไม่มีสมการใดในปัญหาการรวมประกอบด้วยตัวแปรจาก จากนั้นการแทนที่จะถูกรวมโดยการแทนที่อื่นถ้ามีการแทนที่เช่นนั้น สำหรับทุกเทอม[ 2 ] ตัวอย่าง เช่นถูกรวมโดย โดยใช้แต่ ไม่ถูกรวมโดยเนื่องจากไม่ใช่ตัวอย่าง ของ[ 3 ]

ชุดโซลูชัน

การแทนที่ σ คือคำตอบของปัญหาการรวมEถ้าl i σ ≡ r i σสำหรับการแทนที่ดังกล่าวเรียกว่าตัวรวมของEตัวอย่างเช่น ถ้า ⊕ มีคุณสมบัติการสลับที่ ปัญหาการรวม { xaax } จะมีคำตอบ { xa }, { xaa }, { xaaa } เป็นต้น ในขณะที่ปัญหา { xaa } ไม่มีคำตอบ

สำหรับปัญหาการรวมE ที่กำหนดให้ เซตSของตัวรวมจะเรียกว่าสมบูรณ์ถ้าการแทนที่คำตอบแต่ละคำตอบถูกครอบคลุมโดยการแทนที่บางอย่างในSเซตการแทนที่ที่สมบูรณ์นั้นมีอยู่เสมอ (เช่น เซตของคำตอบทั้งหมด) แต่ในบางกรอบงาน (เช่น การรวมลำดับสูงแบบไม่จำกัด) ปัญหาในการพิจารณาว่ามีคำตอบใดอยู่หรือไม่ (กล่าวคือ เซตการแทนที่ที่สมบูรณ์นั้นไม่ว่างเปล่าหรือไม่) นั้นไม่สามารถตัดสินได้

เซตSเรียกว่าเซตขั้นต่ำหากไม่มีสมาชิกใดในเซตนั้นที่รวมสมาชิกอื่นเข้าไป ขึ้นอยู่กับกรอบงาน เซตการแทนที่ที่สมบูรณ์และขั้นต่ำอาจมีสมาชิกเป็นศูนย์ หนึ่ง จำนวนจำกัด หรือจำนวนอนันต์ หรืออาจไม่มีอยู่เลยเนื่องจากสายโซ่สมาชิกที่ซ้ำซ้อนเป็นอนันต์[ 4 ]ดังนั้น โดยทั่วไปแล้ว อัลกอริทึมการรวมจะคำนวณค่าประมาณที่จำกัดของเซตที่สมบูรณ์ ซึ่งอาจเป็นหรือไม่เป็นเซตขั้นต่ำก็ได้ แม้ว่าอัลกอริทึมส่วนใหญ่จะหลีกเลี่ยงตัวรวมที่ซ้ำซ้อนเมื่อเป็นไปได้[ 2 ]สำหรับการรวมไวยากรณ์ลำดับแรก Martelli และ Montanari [ 5 ]ได้นำเสนออัลกอริทึมที่รายงานความไม่สามารถแก้ไขได้หรือคำนวณตัวรวมตัวเดียวที่สร้างเซตการแทนที่ที่สมบูรณ์และขั้นต่ำด้วยตัวมันเอง เรียกว่าตัว รวมทั่วไปที่สุด

การรวมเชิงไวยากรณ์ของคำศัพท์ลำดับที่หนึ่ง

แผนภาพสามเหลี่ยมแสดงการรวมคำศัพท์t 1และt 2 ทางไวยากรณ์ โดยการแทนที่ σ

การรวมเชิงไวยากรณ์ของพจน์ลำดับที่หนึ่งเป็นกรอบการรวมที่ใช้กันอย่างแพร่หลายที่สุด โดยอิงจากTที่เป็นเซตของพจน์ลำดับที่หนึ่ง (เหนือเซตVของตัวแปรที่กำหนด, Cของค่าคงที่ และF nของ สัญลักษณ์ฟังก์ชัน n -ary) และ ≡ ที่เป็นความเท่าเทียมกันเชิงไวยากรณ์ในกรอบนี้ ปัญหาการรวมที่แก้ได้แต่ละปัญหา{ l 1r 1 , ..., l nr n } มี เซตคำตอบเดี่ยวที่สมบูรณ์และเห็นได้ชัดว่าน้อยที่สุด{ σ }สมาชิกσ ของเซตนี้ เรียกว่าตัวรวมทั่วไปที่สุด ( mgu ) ของปัญหา พจน์ทางด้านซ้ายและด้านขวามือของสมการที่เป็นไปได้แต่ละสมการจะเท่ากันเชิงไวยากรณ์เมื่อใช้ mgu กล่าวคือl 1 σ = r 1 σ ∧ ... ∧ l n σ = r n σตัวรวมใดๆ ของปัญหาจะถูกรวมไว้[หมายเหตุ 4 ]โดยmgu σ mgu มีเอกลักษณ์เฉพาะตัวจนถึงรูปแบบต่างๆ: ถ้าS 1และS 2เป็นเซตคำตอบที่สมบูรณ์และน้อยที่สุดของปัญหาการรวมไวยากรณ์เดียวกันแล้วS 1 = { σ 1 } และS 2 = { σ 2 } สำหรับการแทนที่ σ 1และσ 2บางอย่างและ1เป็นรูปแบบหนึ่งของ2สำหรับตัวแปรx แต่ละตัว ที่ปรากฏในปัญหา

ตัวอย่างเช่น ปัญหาการรวม { xz , yf ( x ) } มีตัวรวม { xz , yf ( z ) } เพราะว่า

x{ xz , yf ( z ) } = z= z{ xz , yf ( z ) } , และ
y{ xz , yf ( z ) } = เอฟ ( z ) = เอฟ ( x ) { xz , yf ( z ) } .

นี่คือตัวรวมที่ครอบคลุมที่สุด ตัวรวมอื่นๆ สำหรับปัญหาเดียวกัน ได้แก่ เช่น { xf ( x 1 ), yf ( f ( x 1 )), zf ( x 1 ) }, { xf ( f ( x 1 )), yf ( f ( f ( x 1 ))), zf ( f ( x 1 )) } และอื่นๆ อีกมากมาย มีตัวรวมที่คล้ายกันอยู่นับไม่ถ้วน

ตัวอย่างเช่น ปัญหาg ( x , x ) ≐ f ( y ) ไม่มีคำตอบในส่วนที่ ≡ เป็นเอกลักษณ์ตามตัวอักษร เนื่องจากหากมีการแทนที่ใดๆ ทางด้านซ้ายและด้านขวา จะยังคงรักษาgและf ที่อยู่ด้านนอกสุด ไว้ และเทอมที่มีสัญลักษณ์ฟังก์ชันที่อยู่ด้านนอกสุดต่างกันจะมีความแตกต่างกันทางไวยากรณ์

อัลกอริทึมการรวม

อัลกอริทึมการรวมของโรบินสันในปี 1965

สัญลักษณ์จะถูกจัดเรียงโดยให้ตัวแปรอยู่ก่อนสัญลักษณ์ฟังก์ชัน เทอมจะถูกจัดเรียงตามความยาวที่เขียนเพิ่มขึ้น เทอมที่มีความยาวเท่ากันจะถูกจัดเรียงตามลำดับตัวอักษร [ 6 ] สำหรับเซตTของเทอม เส้นทางความไม่ลงรอยp ของเซตนี้ คือเส้นทางที่สั้นที่สุดตามลำดับตัวอักษรซึ่งเทอมสมาชิกสองเทอมของTแตกต่างกัน เซตความไม่ลงรอยของเซตนี้คือเซตของเทอมย่อยที่เริ่มต้นที่pอย่างเป็นทางการ: { t | p  : tT } [ 7 ]

อัลกอริทึม: [ 8 ]

กำหนดให้เซตTของพจน์ที่ต้องการรวมเข้าด้วยกัน ให้σเริ่มต้นเป็นการแทนที่เอกลักษณ์ ทำตลอดไป     ถ้าเป็นเซตที่มีสมาชิกเพียงตัวเดียวแล้ว         ส่งคืนσ     ไฟ     ให้Dเป็นเซตความไม่เห็นด้วยของ และ     ให้sและtเป็นสองคำที่น้อยที่สุดตามลำดับตัวอักษรในD     ถ้าsไม่ใช่ตัวแปร หรือsปรากฏในtแล้ว         ส่งคืนค่า "ไม่สามารถรวมกันได้"     ไฟ      เสร็จแล้ว 

Jacques Herbrandได้อภิปรายแนวคิดพื้นฐานของการรวมและร่างอัลกอริทึมในปี 1930 [ 9 ] [ 10 ] [ 11 ] แต่ผู้เขียนส่วนใหญ่ยกให้ John Alan Robinsonเป็นผู้คิดค้นอัลกอริทึมการรวมตัวแรก(ดูในกรอบ) [ 12 ] [ 13 ] [หมายเหตุ 5 ]อัลกอริทึมของ Robinson มีพฤติกรรมแบบเลขชี้กำลังในกรณีที่เลวร้ายที่สุดทั้งในด้านเวลาและพื้นที่[ 11 ] [ 15 ]ผู้เขียนจำนวนมากได้เสนออัลกอริทึมการรวมที่มีประสิทธิภาพมากขึ้น[ 16 ]อัลกอริทึมที่มีพฤติกรรมเชิงเส้นในกรณีที่เลวร้ายที่สุดถูกค้นพบโดยอิสระโดยMartelli & Montanari (1976)และPaterson & Wegman (1976) [หมายเหตุ 6 ] Baader & Snyder (2001)ใช้เทคนิคที่คล้ายกับ Paterson-Wegman ดังนั้นจึงเป็นเชิงเส้น[ 17 ]แต่เช่นเดียวกับอัลกอริทึมการรวมเชิงเส้นส่วนใหญ่ จะช้ากว่าเวอร์ชัน Robinson สำหรับอินพุตขนาดเล็กเนื่องจากค่าใช้จ่ายในการประมวลผลล่วงหน้าของอินพุตและการประมวลผลภายหลังของเอาต์พุต เช่น การสร้างการแสดงDAG de Champeaux (2022)ก็มีความซับซ้อนเชิงเส้นในขนาดของอินพุตเช่นกัน แต่สามารถแข่งขันกับอัลกอริทึม Robinson ได้สำหรับอินพุตขนาดเล็ก ความเร็วที่เพิ่มขึ้นได้มาจากการใช้ การแสดงแคลคูลัส เชิงวัตถุที่หลีกเลี่ยงความจำเป็นในการประมวลผลล่วงหน้าและภายหลัง แต่ทำให้วัตถุตัวแปรรับผิดชอบในการสร้างการแทนที่และการจัดการกับนามแฝง เดอ ชองโปซ์ อ้างว่าความสามารถในการเพิ่มฟังก์ชันการทำงานให้กับแคลคูลัสเชิงเงื่อนไขที่แสดงเป็นวัตถุ โปรแกรมมิ่งนั้น เปิดโอกาสให้สามารถปรับปรุงการดำเนินการตรรกะอื่นๆ ได้เช่นกัน[ 15 ]

อัลกอริทึมต่อไปนี้มักถูกนำเสนอและมีที่มาจากMartelli & Montanari (1982) [ หมายเหตุ 7 ]เมื่อกำหนดชุดสมการศักยภาพที่จำกัด อัลกอริทึมจะใช้กฎเพื่อแปลงชุดสมการนั้นให้เป็นชุดสมการที่เทียบเท่ากันในรูปแบบ { x 1u 1 , ..., x mu m } โดยที่x 1 , ..., x mเป็นตัวแปรที่แตกต่างกัน และu 1 , ..., u mเป็นพจน์ที่ไม่มีx iชุดในรูปแบบนี้สามารถอ่านได้ว่าเป็นการแทนที่ หากไม่มีคำตอบ อัลกอริทึมจะสิ้นสุดด้วย ⊥; ผู้เขียนคนอื่นใช้ "Ω" หรือ " fail " ในกรณีนั้น การดำเนินการแทนที่ตัวแปรx ทั้งหมด ในปัญหาGด้วยพจน์tจะถูกเขียนแทนด้วยG { xt } เพื่อความง่าย สัญลักษณ์คงที่ถือเป็นสัญลักษณ์ฟังก์ชันที่มีอาร์กิวเมนต์เป็นศูนย์

 ลบ
 สลายตัว
ถ้าหรือ ขัดแย้ง
 แลกเปลี่ยน
ถ้าและ กำจัด[หมายเหตุ 8 ]
ถ้า ตรวจสอบ

การตรวจสอบที่เกิดขึ้น

ความพยายามที่จะรวมตัวแปรxกับเทอมที่มีxเป็นเทอมย่อยที่เข้มงวดxf (..., x , ...) จะนำไปสู่เทอมอนันต์เป็นคำตอบสำหรับxเนื่องจากxจะปรากฏเป็นเทอมย่อยของตัวมันเอง ในเซตของเทอมอันดับแรก (จำกัด) ตามที่กำหนดไว้ข้างต้น สมการxf (..., x , ...) ไม่มีคำตอบ ดังนั้น กฎ การกำจัดจึงสามารถใช้ได้เฉพาะเมื่อxvars ( t ) เท่านั้น เนื่องจากการตรวจสอบเพิ่มเติมนี้ ซึ่งเรียกว่าการตรวจสอบการเกิดขึ้นทำให้ขั้นตอนวิธีช้าลง จึงถูกละเว้น เช่น ในระบบ Prolog ส่วนใหญ่ จากมุมมองทางทฤษฎี การละเว้นการตรวจสอบนี้เทียบเท่ากับการแก้สมการบนต้นไม้อนันต์ ดู#การรวมเทอมอนันต์ด้านล่าง

หลักฐานการเลิกจ้าง

สำหรับการพิสูจน์การสิ้นสุดของอัลกอริทึม ให้พิจารณาสามสิ่งต่อไปนี้ โดยที่n varคือจำนวนตัวแปรที่ปรากฏมากกว่าหนึ่งครั้งในชุดสมการn lhsคือจำนวนสัญลักษณ์ฟังก์ชันและค่าคงที่ทางด้านซ้ายของสมการที่เป็นไปได้ และn eqnคือจำนวนสมการ เมื่อใช้ กฎ eliminate n varจะลดลง เนื่องจากxถูกกำจัดออกจากGและเก็บไว้เฉพาะใน { xt } การใช้กฎอื่นใดจะไม่สามารถเพิ่มn varได้อีก เมื่อใช้ กฎ decompose , conflictหรือswap n lhs จะลดลง เนื่องจากอย่างน้อย fที่อยู่นอกสุดทางด้านซ้ายจะหายไป การใช้กฎdeleteหรือcheck ที่เหลือ จะไม่สามารถเพิ่มn lhs ได้ แต่จะลดn eqnดังนั้น การใช้กฎใดๆ จะลดสามสิ่งต่อไปนี้เมื่อเทียบกับลำดับพจนานุกรมซึ่งเป็นไปได้เพียงจำนวนครั้งที่จำกัดเท่านั้น

Conor McBrideสังเกต[ 18 ]ว่า "โดยการแสดงโครงสร้างที่การรวมใช้ประโยชน์" ใน ภาษา ที่มีประเภทขึ้นอยู่กับเช่นEpigramอัลกอริทึมการรวมของ Robinsonสามารถทำให้เป็นแบบเรียกซ้ำตามจำนวนตัวแปรได้ ซึ่งในกรณีนี้การพิสูจน์การสิ้นสุดแยกต่างหากจึงไม่จำเป็น

ตัวอย่างของการรวมโครงสร้างทางไวยากรณ์ของคำศัพท์ลำดับที่หนึ่ง

ตามหลักไวยากรณ์ของ Prolog สัญลักษณ์ที่ขึ้นต้นด้วยตัวอักษรพิมพ์ใหญ่คือชื่อตัวแปร สัญลักษณ์ที่ขึ้นต้นด้วยตัวอักษรพิมพ์เล็กคือสัญลักษณ์ฟังก์ชัน และเครื่องหมายจุลภาคใช้เป็นตัวดำเนินการตรรกะ "และ" สำหรับสัญลักษณ์ทางคณิตศาสตร์ x , y, zใช้เป็นตัวแปรf, gใช้เป็นสัญลักษณ์ฟังก์ชัน และa, bใช้เป็นค่าคงที่

สัญกรณ์โปรล็อกสัญกรณ์ทางคณิตศาสตร์การทดแทนแบบรวมคำอธิบาย
a = a { a = a }{}สำเร็จ ( ตรรกบท )
a = b { a = b }aและbไม่ตรงกัน
X = X { x = x }{}สำเร็จ ( ตรรกบท )
a = X { a = x }{ xa }xถูกรวมเข้ากับค่าคงที่a
X = Y { x = y }{ xy }xและyเป็นค่าที่ซ้ำกัน
f(a,X) = f(a,b) { f ( a , x ) = f ( a , b ) }{ xb }สัญลักษณ์ฟังก์ชันและค่าคงที่ตรงกันxถูกรวมเข้ากับค่าคงที่b
f(a) = g(a) { f ( a ) = g ( a ) }fและgไม่ตรงกัน
f(X) = f(Y) { f ( x ) = f ( y ) }{ xy }xและyเป็นค่าที่ซ้ำกัน
f(X) = g(Y) { f ( x ) = g ( y ) }fและgไม่ตรงกัน
f(X) = f(Y,Z) { f ( x ) = f ( y , z ) }ล้มเหลว สัญลักษณ์ของฟังก์ชัน fมีจำนวนอาร์กิวเมนต์ต่างกัน
f(g(X)) = f(Y) { f ( g ( x )) = f ( y ) }{ yg ( x ) }รวมyเข้ากับเทอม⁠ ⁠
f(g(X),X) = f(Y,a) { f ( g ( x ), x ) = f ( y , a ) }{ xa , yg ( a ) }รวมxกับค่าคงที่aและyกับเทอม⁠ ⁠
X = f(X) { x = f ( x ) }ควรจะเป็น ⊥ส่งคืนค่า ⊥ ในตรรกะลำดับที่หนึ่งและภาษา Prolog สมัยใหม่หลายภาษา (บังคับใช้โดยการตรวจสอบ occurs )

ใช้งานได้สำเร็จทั้งในภาษา Prolog แบบดั้งเดิมและ Prolog II โดยสามารถรวมxเข้ากับเทอมอนันต์x=f(f(f(f(...))))ได้

X = Y, Y = a { x = y , y = a }{ xa , ya }ทั้งxและyมีค่าคงที่เท่ากับa
a = Y, X = Y { a = y , x = y }{ xa , ya }ตามตัวอย่างข้างต้น (ลำดับของสมการในชุดไม่สำคัญ)
X = a, b = X { x = a , b = x }ล้มเหลวaและbไม่ตรงกัน ดังนั้นxจึงไม่สามารถรวมกับทั้งสองได้
สองเทอมที่มีโครงสร้างต้นไม้ขนาดใหญ่ขึ้นแบบทวีคูณสำหรับกรณีที่พบได้น้อยที่สุด การแสดงผล แบบ DAG (ส่วนสีส้มทางขวาสุด) ยังคงมีขนาดเชิงเส้น

ตัวรวมทั่วไปที่สุดของปัญหาการรวมลำดับแรกทางไวยากรณ์ที่มีขนาดnอาจมีขนาด2nตัวอย่างเช่น ปัญหา⁠ ⁠มีตัวรวมทั่วไปที่สุด⁠ ⁠ดังแสดงในภาพ เพื่อหลีกเลี่ยงความซับซ้อนของเวลาแบบเลขชี้กำลังที่เกิดจากการระเบิดดังกล่าว อัลกอริทึมการรวมขั้นสูงจึงทำงานบนกราฟแบบไม่มีวงจรทิศทาง (DAG) แทนที่จะเป็นต้นไม้[ 19 ]

การประยุกต์ใช้: การรวมเป็นหนึ่งเดียวในการเขียนโปรแกรมเชิงตรรกะ

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

ในบทนำ:

  1. ตัวแปรสามารถรวมเข้ากับค่าคงที่ เทอม หรือตัวแปรอื่นได้ ซึ่งจะทำให้ตัวแปรนั้นกลายเป็นชื่อเรียกแทนของตัวแปรคงที่นั้นโดยปริยาย ในภาษาโปรล็อกสมัยใหม่หลายภาษาและในตรรกศาสตร์ลำดับที่หนึ่งตัวแปรไม่สามารถรวมเข้ากับเทอมที่มีตัวแปรนั้นอยู่ได้ นี่คือสิ่งที่เรียกว่าการตรวจสอบการเกิดขึ้น (occes check )
  2. ค่าคงที่สองค่าจะสามารถรวมกันได้ก็ต่อเมื่อค่าคงที่ทั้งสองนั้นเหมือนกันทุกประการ
  3. ในทำนองเดียวกัน เทอมหนึ่งสามารถรวมเข้ากับเทอมอื่นได้ หากสัญลักษณ์ฟังก์ชันสูงสุดและจำนวนพารามิเตอร์ของเทอมนั้นเหมือนกัน และหากพารามิเตอร์สามารถรวมเข้าด้วยกันได้พร้อมกัน โปรดทราบว่านี่เป็นพฤติกรรมแบบเรียกซ้ำ
  4. การดำเนินการส่วนใหญ่ รวมถึง+, -, *, /, ไม่ได้รับการประเมินโดย=ดังนั้น ตัวอย่างเช่น1+2 = 3จึงไม่สามารถหาคำตอบได้เนื่องจากมีความแตกต่างกันทางไวยากรณ์ การใช้ข้อจำกัดทางเลขคณิตจำนวนเต็ม#=ทำให้เกิดรูปแบบหนึ่งของการรวม E ซึ่งการดำเนินการเหล่านี้ได้รับการตีความและประเมิน[ 20 ]

การประยุกต์ใช้: การอนุมานประเภท

โดยทั่วไปแล้วอัลกอริธึม การอนุมานประเภทจะใช้หลักการรวมประเภท โดยเฉพาะอย่างยิ่ง การอนุมานประเภทแบบ Hindley-Milnerซึ่งใช้ในภาษาโปรแกรมเชิงฟังก์ชันอย่าง HaskellและMLตัวอย่างเช่น เมื่อพยายามอนุมานประเภทของนิพจน์ Haskell True : ['x']คอมไพเลอร์จะใช้ประเภทa -> [a] -> [a]ของฟังก์ชันการสร้างลิสต์(:)ประเภทBoolของอาร์กิวเมนต์ตัวแรกTrueและประเภท[Char]ของอาร์กิวเมนต์ตัวที่สอง['x']ตัวแปรประเภทโพลีมอร์ฟิกaจะถูกรวมเข้ากับBoolและอาร์กิวเมนต์ตัวที่สอง[a]จะถูกรวมเข้ากับ[Char]ไม่aสามารถเป็นทั้งBoolและCharในเวลาเดียวกันได้ ดังนั้นนิพจน์นี้จึงไม่มีประเภทที่ถูกต้อง

เช่นเดียวกับ Prolog สามารถกำหนดอัลกอริธึมสำหรับการอนุมานประเภทได้ดังนี้:

  1. ตัวแปรประเภทใดก็ได้สามารถรวมเข้ากับนิพจน์ประเภทใดก็ได้ และจะถูกกำหนดค่าให้กับนิพจน์นั้น ทฤษฎีเฉพาะอาจจำกัดกฎนี้ด้วยการตรวจสอบการเกิดขึ้น
  2. ค่าคงที่ประเภทสองค่าจะรวมกันได้ก็ต่อเมื่อค่าคงที่ทั้งสองนั้นเป็นประเภทเดียวกันเท่านั้น
  3. โครงสร้างประเภทสองแบบจะรวมกันได้ก็ต่อเมื่อเป็นการประยุกต์ใช้ตัวสร้างประเภทเดียวกัน และประเภทส่วนประกอบทั้งหมดของพวกมันรวมกันได้แบบเรียกซ้ำ

การประยุกต์ใช้: การรวมโครงสร้างคุณลักษณะ

การรวมเป็นหนึ่งเดียวถูกนำมาใช้ในสาขาวิจัยต่างๆ ของภาษาศาสตร์เชิงคำนวณ[ 21 ] [ 22 ]

การรวมกันตามลำดับ

ตรรกะที่เรียงลำดับตามค่าช่วยให้สามารถกำหนดประเภทหรือชนิดให้กับแต่ละเทอม และประกาศประเภท s1เป็นประเภทย่อยของประเภท s2 ซึ่งโดยทั่วไปเขียนว่า s1 s2 ตัวอย่าง เช่น เมื่อให้เหตุผลเกี่ยวกับสิ่งมีชีวิตทางชีววิทยา การประกาศให้ประเภท dogเป็นประเภทย่อยของประเภท animal นั้นมีประโยชน์ต้องการเทอมที่มีประเภท s ใดๆ ก็สามารถใช้เทอมที่มีประเภทย่อยใดๆ ของ sแทนได้ ตัวอย่างเช่น สมมติว่ามีการประกาศฟังก์ชัน mother : animal animalและการประกาศค่าคงที่ lassie : dogเทอม mother ( lassie ) นั้นถูกต้องและมีประเภท animalเพื่อให้ได้ข้อมูลว่าแม่ของ dog เป็น dog อีกที ก็อาจมีการประกาศ mother : dog dog อีกครั้ง ซึ่งเรียกว่าการโอเวอร์โหลดฟังก์ชันคล้ายกับการโอเวอร์โหลดในภาษาโปรแกรม

Waltherได้เสนออัลกอริทึมการรวมสำหรับเงื่อนไขในตรรกะเรียงลำดับ โดยกำหนดให้สำหรับประเภทที่ประกาศไว้สองประเภทใดๆs 1 , s 2จะต้องประกาศส่วนร่วมของพวกมันs 1s 2 ด้วยเช่นกัน: ถ้า x 1และx 2เป็นตัวแปรประเภทs 1และs 2ตามลำดับ สมการx 1x 2จะมีคำตอบ { x 1 = x , x 2 = x } โดยที่x : s 1s 2 [ 23 ] หลังจากรวมอัลกอริทึมนี้เข้ากับตัวพิสูจน์ทฤษฎีบทอัตโนมัติแบบอิงตามข้อความ เขาสามารถแก้ปัญหามาตรฐานได้โดยการแปลเป็นตรรกะเรียงลำดับ ซึ่ง ทำให้ ลดขนาดลงไปหนึ่งลำดับ เนื่องจากตัวบ่งชี้เอกภาคจำนวนมากกลายเป็นประเภท

Smolka ได้วางแนวทางทั่วไปของตรรกะเรียงลำดับเพื่อให้สามารถใช้โพลีมอร์ฟิซึมแบบพารามิเตอร์ได้ [ 24 ] ใน กรอบงานของเขา การประกาศการเรียงลำดับย่อยจะถูกส่งต่อไปยังนิพจน์ประเภทที่ซับซ้อน ตัวอย่างเช่น รายการเรียงลำดับแบบพารามิเตอร์( X )อาจถูกประกาศ (โดยที่Xเป็นพารามิเตอร์ประเภทเช่นเดียวกับในเทมเพลต C++ ) และจากการประกาศการเรียงลำดับย่อยintfloatความสัมพันธ์list ( int ) ⊆ list ( float ) จะถูกอนุมานโดยอัตโนมัติ ซึ่งหมายความว่าแต่ละรายการของจำนวนเต็มก็เป็นรายการของจำนวนทศนิยมด้วย

Schmidt-Schauß ได้ขยายตรรกะเรียงลำดับทั่วไปเพื่อให้สามารถประกาศเทอมได้ [ 25 ] ตัวอย่างเช่น สมมติว่ามีการประกาศซับซอร์ตevenintและoddintการประกาศเทอมเช่น ∀ i  : int . ( i + i ) : evenอนุญาตให้ประกาศคุณสมบัติของการบวกจำนวนเต็มที่ไม่สามารถแสดงได้ด้วยการโอเวอร์โหลดแบบปกติ

การรวมพจน์อนันต์

ข้อมูลเบื้องต้นเกี่ยวกับต้นไม้อนันต์:

  • B. Courcelle (1983). "คุณสมบัติพื้นฐานของต้นไม้อนันต์" . Theoret. Comput. Sci . 25 (2): 95– 169. doi : 10.1016/0304-3975(83)90059-2 .
  • Michael J. Maher (กรกฎาคม 1988). "การกำหนดสัจพจน์ที่สมบูรณ์ของพีชคณิตของต้นไม้จำกัด ต้นไม้ตรรกยะ และต้นไม้อนันต์". รายงานการประชุมสัมมนาประจำปีครั้งที่ 3 ของ IEEE ว่าด้วยตรรกศาสตร์ในวิทยาการคอมพิวเตอร์ เอดินบะระหน้า  348–357 .
  • Joxan Jaffar; Peter J. Stuckey (1986). "ความหมายของการเขียนโปรแกรมตรรกะต้นไม้อนันต์" . วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี . 46 : 141– 158. doi : 10.1016/0304-3975(86)90027-7 .

อัลกอริทึมการรวม, Prolog II:

  • A. Colmerauer (1982). KL Clark; S.-A. Tarnlund (บรรณาธิการ). Prolog และ Infinite Trees . Academic Press.
  • Alain Colmerauer (1984). "สมการและอสมการบนต้นไม้จำกัดและอนันต์" ใน ICOT (บรรณาธิการ). รายงานการประชุมนานาชาติว่าด้วยระบบคอมพิวเตอร์ยุคที่ห้าหน้า  85–99

การใช้งาน:

  • Francis Giannesini; Jacques Cohen (1984). "การสร้างตัวแยกวิเคราะห์และการจัดการไวยากรณ์โดยใช้ต้นไม้อนันต์ของ Prolog"วารสารการเขียนโปรแกรมเชิงตรรกะ 1 ( 3): 253– 265. doi : 10.1016/0743-1066(84)90013-X .

การรวมระบบอิเล็กทรอนิกส์

การรวมสมการ ( E-unification)คือปัญหาของการหาคำตอบสำหรับชุดสมการ ที่กำหนด โดยคำนึงถึงความรู้พื้นฐานเกี่ยวกับสมการEซึ่งกำหนดไว้ในรูปของชุดความเท่าเทียม กันสากล สำหรับชุด E บางชุด ได้มีการคิดค้น อัลกอริทึมแก้สมการ(หรือที่เรียกว่าอัลกอริทึมการรวมสมการ E ) ขึ้นมาแล้ว แต่สำหรับ ชุดอื่นๆ นั้น ได้มีการพิสูจน์แล้วว่าไม่มีอัลกอริทึมดังกล่าวอยู่จริง

ตัวอย่างเช่น ถ้าaและbเป็นค่าคงที่ที่ต่างกันสมการจะไม่มีคำตอบในแง่ของการรวมเชิงไวยากรณ์ ล้วนๆ โดยที่ไม่ทราบอะไรเกี่ยวกับตัวดำเนินการเลยอย่างไรก็ตามถ้าทราบว่าตัวดำเนินการนั้น มีคุณสมบัติ การสลับที่ได้ การแทนที่{ xb , ya }จะแก้สมการข้างต้นได้ เนื่องจาก

⁠ ⁠{ xb , ya }
= ⁠ ⁠โดยการยื่นคำร้องขอเปลี่ยนตัว
= ⁠ ⁠โดยสมบัติการสลับที่ของ⁠ ⁠
= ⁠ ⁠{ xb , ya }โดยการประยุกต์ใช้การแทนที่ (แบบผกผัน)

ความรู้พื้นฐานEสามารถระบุคุณสมบัติการสลับที่ของ⁠ ⁠ ได้โดยใช้ความเท่าเทียมกันสากล " ⁠ ⁠สำหรับทุกu , v "

ความรู้พื้นฐานเฉพาะด้านต่างๆ เช่น E

หลักเกณฑ์การตั้งชื่อที่ใช้
u , v , w :⁠ ⁠= ⁠ ⁠เอความสัมพันธ์เชิงสมาคมของ⁠ ⁠
u , v :⁠ ⁠= ⁠ ⁠ซีคุณสมบัติการสลับที่ของ⁠ ⁠
u , v , w :⁠ ⁠= ⁠ ⁠ดีแอลการกระจายตัวทางซ้ายของ⁠ ⁠เหนือ⁠ ⁠
u , v , w :⁠ ⁠= ⁠ ⁠ดร.การกระจายตัวทางขวาของ⁠ ⁠เหนือ⁠ ⁠
u :⁠ ⁠= คุณฉันความไร้สมรรถภาพทางเพศของ⁠ ⁠
u :⁠ ⁠= คุณเอ็นแอองค์ประกอบกลางด้านซ้ายnเมื่อเทียบกับ⁠ ⁠
u :⁠ ⁠= คุณ    น.ร.     องค์ประกอบกลางด้านขวาnเมื่อเทียบกับ⁠ ⁠

กล่าวกันว่าการรวมทฤษฎีสามารถตัดสินได้หากมีการคิดค้นอัลกอริทึมการรวมที่สามารถยุติการทำงานได้สำหรับ ปัญหาอินพุต ใดๆและกล่าวกันว่าการรวม ทฤษฎี สามารถตัดสินได้บางส่วนหากมีการคิดค้นอัลกอริทึมการรวมที่สามารถยุติการทำงานได้สำหรับ ปัญหาอินพุต ที่สามารถแก้ไขได้แต่Hอาจค้นหาคำตอบของปัญหาอินพุตที่ไม่สามารถแก้ไขได้ต่อไปเรื่อยๆ

สามารถสรุปผลการรวมทฤษฎีได้สำหรับทฤษฎีต่อไปนี้:

การรวมเป็นหนึ่งเดียวสามารถตัดสินได้บางส่วนสำหรับทฤษฎีต่อไปนี้:

การปรับพารามิเตอร์ด้านเดียว

หากมีระบบการเขียนใหม่เทอมบรรจบRสำหรับEอัลกอริทึมพาราโมดูเลชันด้านเดียว[ 37 ] สามารถใช้เพื่อแจงนับโซลูชันทั้งหมดของสมการที่กำหนด

กฎพาราโมดูเลชันด้านเดียว
G ∪ { f ( s 1 ,..., s n ) ≐ f ( t 1 ,..., t n ) } ; ส.G ∪ { s 1t 1 , ..., s nt n } ; ส.    สลายตัว
G ∪ { xt } ; ส.G { xt } ; S { xt } ∪ { xt } ถ้าตัวแปรxไม่ปรากฏในt    กำจัด
G ∪ { f ( s 1 ,..., s n ) ≐ t } ; ส.G ∪ { s 1 ≐ u 1 , ..., s n ≐ u n , rt } ; ส.    ถ้าf ( u 1 ,..., u n ) → rเป็นกฎจากR    กลายพันธุ์
G ∪ { f ( s 1 ,..., s n ) ≐ y } ; ส.G ∪ { s 1y 1 , ..., s ny n , yf ( y 1 ,..., y n ) } ; ส.ถ้าy 1 ,..., y nเป็นตัวแปรใหม่     เลียนแบบ

เริ่มต้นด้วยGซึ่งเป็นปัญหาการรวมที่ต้องแก้ไข และSเป็นการแทนที่เอกลักษณ์ กฎต่างๆ จะถูกนำมาใช้แบบไม่แน่นอนจนกว่าเซตว่างจะปรากฏเป็นG ที่แท้จริง ในกรณีนี้S ที่แท้จริง จะเป็นการแทนที่แบบรวม ขึ้นอยู่กับลำดับที่กฎการปรับพารามิเตอร์ถูกนำมาใช้ การเลือกสมการที่แท้จริงจากGและการเลือก กฎ ของRในmutateเส้นทางการคำนวณที่แตกต่างกันจึงเป็นไปได้ บางเส้นทางเท่านั้นที่นำไปสู่คำตอบ ในขณะที่บางเส้นทางสิ้นสุดที่G ≠ {} ซึ่งไม่มีกฎใดใช้ได้อีกต่อไป (เช่นG = { f (...) ≐ g (...) })

ตัวอย่างคำศัพท์ระบบการเขียนใหม่R
1แอป ( nil , z ) z
2     แอป ( x . y , z ) x . app ( y , z )

ตัวอย่างเช่น ระบบการเขียนใหม่ของเทอมRถูกใช้เพื่อกำหนด ตัวดำเนินการ ต่อท้ายของรายการที่สร้างจากconsและnilโดยที่cons ( x , y ) ถูกเขียนในรูปแบบอินฟิกซ์เป็นx . yเพื่อความกระชับ เช่นapp ( a . b . nil , c . d . nil ) → a . app ( b . nil , c . d . nil ) → a . b . app ( nil , c . d . nil ) → a . b . c . d . nilแสดงให้เห็นถึงการต่อกันของรายการa . b . nilและc . d . nilโดยใช้กฎการเขียนใหม่ 2, 2 และ 1 ทฤษฎีสมการEที่สอดคล้องกับRคือการปิดความสอดคล้องของRซึ่งทั้งสองอย่างถูกมองว่าเป็นความสัมพันธ์ทวิภาคบนเทอม ตัวอย่างเช่นapp ( a . b . nil , c . d . nil ) ≡ a . b . c . d . nilapp ( a . b . c . d . nil , nil ) อัลกอริทึมพาราโมดูเลชันจะแจงนับคำตอบของสมการโดยสัมพันธ์กับEเมื่อป้อนตัวอย่างRเข้าไป

ตัวอย่างเส้นทางการคำนวณที่ประสบความสำเร็จสำหรับปัญหาการรวม { app ( x , app ( y , x )) ≐ a . a . nil } แสดงอยู่ด้านล่าง เพื่อหลีกเลี่ยงการชนกันของชื่อตัวแปร กฎการเขียนใหม่จะถูกเปลี่ยนชื่ออย่างสม่ำเสมอทุกครั้งก่อนใช้งานโดยกฎmutate ; v 2 , v 3 , ... เป็นชื่อตัวแปรที่สร้างโดยคอมพิวเตอร์เพื่อจุดประสงค์นี้ ในแต่ละบรรทัด สมการที่เลือกจากGจะถูกไฮไลต์ด้วยสีแดง ทุกครั้ง ที่ใช้กฎ mutateกฎการเขียนใหม่ที่เลือก ( 1หรือ2 ) จะถูกระบุไว้ในวงเล็บ จากบรรทัดสุดท้ายสามารถหา การแทนที่แบบรวม S = { ynil , xa . nil } ได้ ในความเป็นจริง app ( x , app ( y , x )) { ynil , xa . nil } = app ( a . nil , app ( nil , a . nil )) ≡ app ( a . nil , a . nil ) ≡ a . app ( nil , a . nil ) ≡ a . a . nilแก้ปัญหาที่กำหนดได้ เส้นทางการคำนวณที่ประสบความสำเร็จอีกเส้นทางหนึ่ง ซึ่งได้มาจากการเลือก "mutate(1), mutate(2), mutate(2), mutate(1)" นำไปสู่การแทนที่S = { ya . a . nil , xnil }; ซึ่งไม่ได้แสดงไว้ในที่นี้ ไม่มีเส้นทางอื่นใดที่นำไปสู่ความสำเร็จ

ตัวอย่างการคำนวณตัวรวม
กฎที่ใช้จีเอส
{ app ( x , app ( y , x )) ≐ a . a . nil } {}
กลายพันธุ์(2){ xโวลต์2 . v 3 , แอป ( y , x )v 4 , v 2 แอพ ( v 3 , v 4 ) . ไม่มี } {}
สลายตัว{ xโวลต์2 . v 3 , แอพ ( y , x ) ≐ v 4 , v 2a , แอพ ( v 3 , v 4 ) ≐ a ไม่มี } {}
กำจัด{ แอป ( y , v 2 . v 3 ) ≐ v 4 , v 2a , แอป ( v 3 , v 4 ) ≐ a . ไม่มี } { xv 2 . v 3 }
กำจัด{ แอป ( y , a . v 3 ) ≐ v 4 , แอป ( v 3 , v 4 ) ≐ a . ไม่มี } { xa . v 3 }
กลายพันธุ์(1){ yไม่มี , a . v 3v 5 , v 5v 4 , แอป ( v 3 , v 4 ) ≐ . ไม่มี } { xa . v 3 }
กำจัด{ yไม่มี , a . v 3v 4 , แอป ( v 3 , v 4 ) ≐ ไม่มี } { xa . v 3 }
กำจัด{ . v 3v 4 , แอป ( v 3 , v 4 ) ไม่มี } { ynil , xa . v 3 }
กลายพันธุ์(1){ . ข้อ3ข้อ4 , ข้อ3ไม่มี , ข้อ4ข้อ6 , ข้อ6 . ไม่มี } { ynil , xa . v 3 }
กำจัด{ . ข้อ3ข้อ4 , ข้อ3ไม่มี , ข้อ4ไม่มี } { ynil , xa . v 3 }
กำจัด{ . ไม่มีโวลต์4 , โวลต์4ไม่มี } { ynil , xa . nil }
กำจัด{ a . nila . nil } { ynil , xa . nil }
สลายตัว{ aa , nilnil } { ynil , xa . nil }
สลายตัว{ nilnil } { ynil , xa . nil }
สลายตัว    ⇒     {} { ynil , xa . nil }

การแคบลง

แผนภาพสามเหลี่ยมแสดงขั้นตอนการแคบลงstที่ตำแหน่งpในเทอมsโดยใช้การแทนที่แบบรวม σ (แถวล่าง) และใช้กฎการเขียนใหม่lr (แถวบน)

ถ้าRเป็นระบบการเขียนใหม่ของพจน์ลู่เข้าสำหรับEแนวทางอื่นนอกเหนือจากส่วนก่อนหน้าคือการประยุกต์ใช้ " ขั้นตอน การจำกัดขอบเขต " อย่างต่อเนื่อง ซึ่งในที่สุดจะสามารถแจงนับคำตอบทั้งหมดของสมการที่กำหนดได้ ขั้นตอนการจำกัดขอบเขต (ดูภาพประกอบ) ประกอบด้วย

  • การเลือกพจน์ย่อยที่ไม่เปลี่ยนแปลงของพจน์ปัจจุบัน
  • โดยการรวมไวยากรณ์เข้ากับด้านซ้ายของกฎจากRและ
  • แทนที่ด้านขวามือของกฎที่สร้างขึ้นลงในเทอมที่สร้างขึ้น

ตามหลักการแล้ว ถ้าlrเป็นสำเนาที่เปลี่ยนชื่อของกฎการเขียนใหม่จากRโดยไม่มีตัวแปรใดที่เหมือนกันกับเทอมsและเทอมย่อยs | pไม่ใช่ตัวแปรและสามารถรวมเป็นหนึ่งเดียวกับl ได้ ผ่านทางmgu σแล้วsสามารถลดทอนให้แคบลงเหลือเทอมt = [ ] p ได้นั่นคือเหลือเทอมโดยที่เทอมย่อยที่p ถูกแทนที่ด้วยสถานการณ์ที่sสามารถลดทอนให้แคบลงเหลือtมักจะใช้สัญลักษณ์stโดยสัญชาตญาณแล้ว ลำดับขั้นตอนการลดทอนt 1t 2 ↝ ... ↝ t nสามารถคิดได้ว่าเป็นลำดับขั้นตอนการเขียนใหม่t 1t 2 → ... → t nแต่เทอมเริ่มต้นt 1จะถูกสร้างขึ้นเรื่อยๆ ตามความจำเป็นเพื่อให้กฎแต่ละข้อที่ใช้สามารถนำไปใช้ได้

การคำนวณพาราโมดูเลชัน ตัวอย่างข้างต้นสอดคล้องกับลำดับการแคบลงต่อไปนี้ ("↓" แสดงถึงการสร้างอินสแตนซ์ในที่นี้):

แอป (xแอ ( y ,x))
xv 2 . v 3
แอป (2 . 3แอ ( y ,2 . 3))v 2 . app ( v 3 , app (y, v 2 . v 3 ))
yไม่มี
v 2 . app ( v 3 , app (ไม่มี, v 2 . v 3 ))เวอร์ชัน2 แอป(3, v 2 .3)
v 3ไม่มี
เวอร์ชัน2 แอป(ไม่มี, v 2 .ไม่มี)v 2 . v 2 . nil

เทอมสุดท้ายv 2 . v 2 . nilสามารถรวมเข้ากับเทอมด้านขวาเดิมa . a . nilได้ ทางไวยากรณ์

บทพิสูจน์การจำกัดขอบเขต[ 38 ]รับประกันว่าเมื่อใดก็ตามที่อินสแตนซ์ของเทอมsสามารถเขียนใหม่เป็นเทอมtโดยระบบการเขียนเทอมใหม่แบบลู่เข้าsและtก็ สามารถจำกัดขอบเขตและเขียนใหม่เป็นเทอมs และt ตามลำดับ โดยที่t เป็นอินสแตนซ์ของs

ในเชิงรูปธรรม: เมื่อใดก็ตามที่*ถ้า tเป็นจริงสำหรับการแทนที่ σ บางอย่าง ก็จะมีเทอม s , t อยู่ ซึ่ง s*s และ t*t และ s τ = t สำหรับการแทนที่ τ บางค่า

การรวมกันในลำดับที่สูงขึ้น

ใน การลดปัญหาที่ 10 ของ Hilbertของ Goldfarb [ 39 ]ให้เป็นการรวมลำดับที่สอง สมการจะสอดคล้องกับปัญหาการรวมที่แสดงไว้ โดยมีตัวแปรฟังก์ชันที่สอดคล้องกับและสดใหม่

แอปพลิเคชันจำนวนมากต้องการให้พิจารณาการรวมเทอมแลมบ์ดาแบบมีประเภทแทนที่จะเป็นเทอมลำดับแรก การรวมดังกล่าวมักเรียกว่าการรวมลำดับสูงการรวมลำดับสูงไม่สามารถตัดสินได้ [ 39 ] [ 40 ] [ 41 ]และปัญหาการรวมดังกล่าวไม่มีตัวรวมทั่วไปส่วนใหญ่ ตัวอย่างเช่น ปัญหาการรวม { f ( a , b , a ) ≐ d ( b , a , c ) } โดยที่ตัวแปรเดียวคือfมีคำตอบ { f ↦ λ xyz . d ( y , x , c ) }, { f ↦ λ xyz . d ( y , z , c ) }, { f ↦ λ xyz . d ( y , a , c ) }, { f ↦ λ xyz . d ( b , x , c ) }, { f ↦ λ xyz . d ( b , z , c ) } และ { f ↦ λ xyz . d ( b , a , c ) } สาขาหนึ่งของการรวมลำดับสูงที่ได้รับการศึกษาอย่างดีคือปัญหาของการรวมเทอมแลมบ์ดาที่มีประเภทง่ายๆ โมดูลัสความเท่าเทียมกันที่กำหนดโดยการแปลง αβη Gérard Huetได้นำเสนออัลกอริทึมการรวม (ก่อน) ที่สามารถตัดสินได้บางส่วน[ 42 ]ซึ่งอนุญาตให้ค้นหาพื้นที่ของตัวรวมอย่างเป็นระบบ (โดยขยายอัลกอริทึมการรวมของ Martelli-Montanari [ 5 ]ด้วยกฎสำหรับเทอมที่มีตัวแปรลำดับสูงกว่า) ซึ่งดูเหมือนว่าจะใช้งานได้ดีพอสมควรในทางปฏิบัติ Huet [ 43 ]และ Gilles Dowek [ 44 ]ได้เขียนบทความสำรวจหัวข้อนี้ไว้แล้ว

เซตย่อยหลายเซตของการรวมลำดับสูงมีพฤติกรรมที่ดี กล่าวคือ เซตย่อยเหล่านี้สามารถตัดสินได้และมีตัวรวมทั่วไปที่สุดสำหรับปัญหาที่แก้ไขได้ เซตย่อยหนึ่งดังกล่าวคือเทอมลำดับแรกที่อธิบายไว้ก่อนหน้านี้การรวมรูปแบบลำดับสูงซึ่งพัฒนาโดย Dale Miller [ 45 ]เป็นเซตย่อยอีกเซตหนึ่งเช่นกัน ภาษาการเขียนโปรแกรมตรรกะลำดับสูงλPrologและTwelfได้เปลี่ยนจากการรวมลำดับสูงแบบเต็มรูปแบบไปเป็นการใช้งานเฉพาะส่วนของรูปแบบเท่านั้น น่าประหลาดใจที่การรวมรูปแบบนั้นเพียงพอสำหรับโปรแกรมเกือบทั้งหมด หากปัญหาการรวมรูปแบบที่ไม่ใช่ปัญหาหนึ่งๆ ถูกระงับไว้จนกว่าการแทนที่ในภายหลังจะทำให้การรวมเข้าไปอยู่ในส่วนของรูปแบบ เซตย่อยของการรวมรูปแบบที่เรียกว่าการรวมฟังก์ชันในฐานะตัวสร้างก็มีพฤติกรรมที่ดีเช่นกัน[ 46 ]ตัวพิสูจน์ทฤษฎีบท Zipperposition มีอัลกอริทึมที่รวมเซตย่อยที่มีพฤติกรรมที่ดีเหล่านี้เข้ากับอัลกอริทึมการรวมลำดับสูงแบบเต็มรูปแบบ[ 2 ]

ในภาษาศาสตร์เชิงคำนวณ หนึ่งในทฤษฎีที่มีอิทธิพลมากที่สุดของการสร้างแบบวงรีคือ วงรีจะถูกแทนด้วยตัวแปรอิสระซึ่งค่าของตัวแปรเหล่านั้นจะถูกกำหนดโดยใช้การรวมลำดับที่สูงกว่า ตัวอย่างเช่น การแสดงความหมายของ "จอนชอบแมรี่และปีเตอร์ก็ชอบด้วย" คือ like( j , m ) ∧ R( p )และค่าของ R (การแสดงความหมายของวงรี) จะถูกกำหนดโดยสมการlike( j , m ) = R( j ) กระบวนการแก้สมการดังกล่าวเรียกว่าการรวมลำดับที่สูงกว่า[ 47 ]

Wayne Snyderได้ให้การวางนัยทั่วไปของการรวมลำดับที่สูงกว่าและการรวม E กล่าวคือ อัลกอริทึมในการรวมเทอมแลมบ์ดาโมดูลทฤษฎีสมการ[ 48 ]

ดูเพิ่มเติม

หมายเหตุ

  1. ^เช่น a ⊕ ( b f ( x )) ≡ a ⊕ ( f ( x ) ⊕ b ) ≡ ( b f ( x )) ⊕ a ≡ ( f ( x ) ⊕ b ) ⊕ a
  2. ^ตั้งแต่
  3. เนื่องจาก z { zxy } = xy
  4. อย่างเป็นทางการ: แต่ละ unifier τ เป็นไปตามx : = ( ) ρสำหรับการทดแทนบางส่วน ρ
  5. ^โรบินสันใช้การรวมไวยากรณ์ลำดับแรกเป็นส่วนประกอบพื้นฐานของขั้น ตอน การแก้ปัญหาสำหรับตรรกะลำดับแรก ซึ่งเป็นก้าวสำคัญใน เทคโนโลยี การให้เหตุผลอัตโนมัติเนื่องจากช่วยขจัดแหล่งที่มาของการระเบิดเชิงการจัดเรียง หนึ่งแหล่ง ได้แก่ การค้นหาการแทนค่าของเทอม [ 14 ]
  6. ^การค้นพบอิสระระบุไว้ใน Martelli & Montanari (1982)ส่วนที่ 1 หน้า 259 สำนักพิมพ์วารสารได้รับ Paterson & Wegman (1978)ในเดือนกันยายน พ.ศ. 2519
  7. ^ Alg.1, p.261. กฎของพวกเขา (a)สอดคล้องกับการสลับ กฎ ที่นี่ (b)เพื่อลบ ( c)เพื่อแยกส่วนและขัดแย้งและ (d)เพื่อกำจัดและตรวจสอบ
  8. ^แม้ว่ากฎจะทำให้ x tใน G คงที่ แต่ก็ไม่สามารถวนซ้ำได้ตลอดไป เนื่องจากเงื่อนไขเบื้องต้น x vars ( G ) จะถูกทำให้เป็นโมฆะโดยการนำไปใช้ครั้งแรก โดยทั่วไปแล้ว อัลกอริทึมจะรับประกันว่าจะสิ้นสุดเสมอ ดูด้านล่าง
  9. ^ a bในกรณีที่มีความเท่าเทียมกันCความเท่าเทียมกันN lและN rจะเทียบเท่ากัน ในทำนองเดียวกันสำหรับD lและD r

อ่านเพิ่มเติม

  • Franz BaaderและWayne Snyder (2001). "ทฤษฎีการรวมเป็นหนึ่งเดียว"ในJohn Alan RobinsonและAndrei Voronkovบรรณาธิการ, Handbook of Automated Reasoningเล่มที่ 1 หน้า 447–533. สำนักพิมพ์ Elsevier Science Publishers.
  • Gilles Dowek (2001). "Higher-order Unification and Matching" เก็บถาวรเมื่อ 2019-05-15 ที่Wayback MachineในHandbook of Automated Reasoning
  • Franz Baader และTobias Nipkow (1998). การเขียนคำศัพท์ใหม่และเรื่องอื่นๆ . สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์
  • Franz Baader และJörg H. Siekmann (1993). "ทฤษฎีการรวมเป็นหนึ่งเดียว" ในคู่มือตรรกศาสตร์ในปัญญาประดิษฐ์และการเขียนโปรแกรมเชิงตรรกะ
  • Jean-Pierre Jouannaud และClaude Kirchner (1991). "การแก้สมการในพีชคณิตนามธรรม: การสำรวจการรวมเป็นหนึ่งเดียวโดยใช้กฎเกณฑ์" ในตรรกศาสตร์เชิงคำนวณ: บทความเพื่อเป็นเกียรติแก่ Alan Robinson
  • Nachum DershowitzและJean-Pierre Jouannaud , Rewrite Systems , ใน: Jan van Leeuwen (บรรณาธิการ), Handbook of Theoretical Computer Science , เล่ม B Formal Models and Semantics , Elsevier, 1990, หน้า 243–320
  • Jörg H. Siekmann (1990). "ทฤษฎีการรวมเป็นหนึ่ง". ในClaude Kirchner (บรรณาธิการ) การรวมเป็นหนึ่ง . สำนักพิมพ์ Academic Press.
  • เควิน ไนท์ (มีนาคม 1989). "การรวมเป็นหนึ่งเดียว: การสำรวจแบบสหวิทยาการ" (PDF) . ACM Computing Surveys . 21 (1): 93– 124. CiteSeerX  10.1.1.64.8967 . doi : 10.1145/62029.62030 . S2CID  14619034 .
  • เจราร์ด ฮิวเอตและดีเร็ก ซี. ออปเพน (1980) "สมการและกฎการเขียนใหม่: แบบสำรวจ" . รายงานทางเทคนิค มหาวิทยาลัยสแตนฟอร์ด.
  • Raulefs, Peter; Siekmann, Jörg; Szabó, P.; Unvericht, E. (1979). "การสำรวจสั้นๆ เกี่ยวกับสถานะของศิลปะในปัญหาการจับคู่และการรวม" ACM SIGSAM Bulletin . 13 (2): 14– 20. doi : 10.1145/1089208.1089210 . S2CID  17033087 .
  • Claude Kirchner และ Hélène Kirchner. การเขียนใหม่ การแก้ปัญหา การพิสูจน์ . อยู่ระหว่างการจัดทำ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Unification_(computer_science)&oldid=1337324451 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การรวม (วิทยาการคอมพิวเตอร์)

ใน ตรรกศาสตร์ และ วิทยาศาสตร์คอมพิวเตอร์ โดยเฉพาะอย่างยิ่งใน การให้เหตุผลอัตโนมัติ การ รวมกัน ( unification) เป็นกระบวนการเชิงอัลกอริทึมใน การแก้สมการ ระหว่าง นิพจน์ เชิงสัญลักษณ์...

คำจำกัดความอย่างเป็นทางการ

ปัญหาการรวมสมการ คือเซตจำกัด E ={ l 1 ≐ r 1 , ..., l n ≐ r n } ของสมการที่ต้องแก้ โดยที่ l i , r i อยู่ในเซตของ พจน์ หรือ นิพจน์ ขึ้นอยู่กับว่านิพจน์หรือพจน์ใดที่อนุญาตให้ปรากฏในเซตสมการหรือปัญหาการรวมสมการ และนิพจน์ใดที่ถือว่าเท่ากัน...

ข้อกำหนดเบื้องต้น

ในทางทฤษฎีแล้ว แนวทางการรวมเป็นหนึ่งเดียวตั้งอยู่บนพื้นฐานของสิ่งต่อไปนี้

การทดแทน

การ แทนที่ (Substitution) คือการจับคู่จากตัวแปรไปยังเทอม สัญลักษณ์ { x ↦ h ( a , y ), z ↦ b } หมายถึงการจับคู่ที่แมปตัวแปรแต่ละตัวไปยังเทอมสำหรับ x > y และตัวแปรอื่นๆ ไปยังตัวมันเอง ตัวแปรทั้งสองต้องแตกต่างกันเป็นคู่ๆ การนำ การแทนที่ไปใช้กับเทอมจะเขียนใน รูป...