มีอัลกอริธึมที่มีประสิทธิภาพสำหรับการเทียบเคียงนิพจน์หรือไม่?


14

เช่น ?xy+x+y=x+y(x+1)

นิพจน์นั้นมาจากพีชคณิตระดับมัธยมธรรมดา แต่ จำกัด เฉพาะการเพิ่มและการคำนวณทางคณิตศาสตร์ (เช่น ) โดยไม่มีการลบการลบหรือการหาร ตัวอักษรเป็นตัวแปร2+2=4;2.3=6

หากเป็นไปได้เราสามารถห้ามการแสดงออกใด ๆ ที่แสดงด้วยค่าตัวเลขอื่นที่ไม่ใช่ ; เช่นไม่ใช่หรือหรือ :1x23x4

  • หลายเส้นไม่มีพลังอื่นใดนอกจาก :ก็โอเค แต่ไม่ใช่และไม่ใช่ทุกอย่างที่สามารถแทนได้เช่นเดียวกับใน การขยายเต็มไปสู่ผลรวมของผลิตภัณฑ์เช่นไม่ใช่ ; 1x+xyx1+x1y1x2+x3y4x(x+y)x2+y
  • ทั้งหมดไม่มีสัมประสิทธิ์นอกเหนือจาก :ก็โอเค แต่ไม่ใช่และไม่ใช่ทุกอย่างที่สามารถแทนได้เช่นเดียวกับที่ขยายเต็มไปจนถึงผลรวมของ - ผลิตภัณฑ์เช่นไม่ใช่ ; และ 1x+xy1.x+1.xy2x+3xya(x+y)+x(a+b)2ax+ay+bx
  • ไม่มีค่าคงที่อื่นที่ไม่ใช่ : อีกครั้งในผลรวมของผลิตภัณฑ์ที่ขยายตัวอย่างเต็มที่ไม่ใช่1(a+1)+(b+1)a+b+2

Q.มีอัลกอริธึมที่มีประสิทธิภาพในการพิจารณาว่าสองนิพจน์นั้นเทียบเท่ากันหรือไม่?


เพื่อแสดงให้เห็นต่อไปนี้เป็นอัลกอริทึมแรงเดรัจฉานที่ไม่มีประสิทธิภาพพร้อมเวลาอธิบาย:

ขยายทั้งสองนิพจน์ให้เป็นผลรวมของผลิตภัณฑ์ซึ่งสามารถตรวจสอบได้อย่างง่ายดายสำหรับการเทียบเท่า (เพียงแค่ไม่สนใจคำสั่งซื้อเนื่องจากการเดินทาง / เชื่อมโยงสามารถเรียงลำดับใหม่)

เช่น
a ( x + y ) + b ( x + y ) a x + a y + b x + b y(a+b)(x+y)ax+ay+bx+by
a(x+y)+b(x+y)ax+ay+bx+by


นี่เป็นปัญหาที่รู้จักกันดี - แม้นักเรียนมัธยมจะได้รับการสอนวิธีแก้ปัญหาด้วยตนเอง มันยังแก้ไขได้โดยผู้ตรวจสอบ / ผู้ตรวจสอบทฤษฎีบทอัตโนมัติ แต่พวกเขามีสมาธิกับประเด็นที่ซับซ้อนมากขึ้น

ต่อไปนี้เป็นบทพิสูจน์ทฤษฎีบทอัตโนมัติออนไลน์ที่ใช้งานได้: http://tryacl2.org/ซึ่งแสดงความเท่าเทียมกันโดยการค้นหาลำดับของการเดินทาง / เชื่อมโยง / แจกจ่าย ฯลฯ :

xy+x+y=x+y(x+1) ?
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))--- 188 ขั้นตอน

y+x(y+1)=x+y(x+1) ?
(thm (= (+ y (* x (+ y 1))) (+ x (* y (+ x 1))) ))--- 325 ขั้นตอน

นี่เป็นคำถามแรกของฉันที่นี่ดังนั้นโปรดแจ้งให้เราทราบหากฉันเลือกสถานที่ที่ไม่ถูกต้องแท็กที่ไม่ถูกต้องวิธีการอธิบาย / ถามที่ผิด ฯลฯ ขอบคุณ!
NB: คำถามนี้ได้รับการเขียนใหม่เพื่อตอบสนองต่อความคิดเห็น
ขอบคุณผู้ตอบทุกคน! ฉันได้เรียนรู้มากมาย


3
คำถามที่นี่ต้องการคำชี้แจงบางอย่าง คุณกำลังทำงานในด้านใด วัตถุเช่น " " และ " " ในองค์ประกอบของนิพจน์ของเขตข้อมูลหรือตัวแปรของคุณหรือไม่ จริง ๆ แล้วมันเป็นเขตข้อมูล (เช่นการเพิ่มและการคูณมีค่าผกผัน) หรือไม่? โปรดทราบว่าผลรวมของผลิตภัณฑ์ไม่ได้ช่วยเพราะ b_nมีคำศัพท์มากมาย b ( a 1 + b 1 ) ( a 2 + b 2 ) ( a n + b n )ab(a1+b1)(a2+b2)(an+bn)
David Richerby

4
หากวัตถุที่เป็นตัวแปรและลบที่ได้รับอนุญาตแล้วคุณเป็นหลักถามเกี่ยวกับการทดสอบตัวตนของพหุนามซึ่งมีขั้นตอนวิธีการสุ่มเวลาพหุนามโดยSchwartz-ZIPPEL แทรก iffและความคิดพื้นฐานคือพหุนามที่ไม่เหมือนกันไม่มีศูนย์ไม่มีรากมากดังนั้นถ้าคุณเริ่มเดารากที่สุ่ม และหารากจำนวนมากมีความน่าจะเป็นสูงที่พหุนามของคุณเป็นศูนย์เหมือนกัน f ( x ) - g ( x ) = 0f(x)=g(x)f(x)g(x)=0
David Richerby

2
ฉันประหลาดใจที่ไม่มีใครพูดถึงเรื่องนี้ แต่ "ถ้าอยู่ใน NP ฉันไม่ต้องกังวลเกี่ยวกับการหาอัลกอริทึมแบบพหุนาม" ก็ไม่สมเหตุสมผล ทุกปัญหาใน P ก็เป็นเช่นกัน คุณอาจต้องถามว่าปัญหานั้นเกิดจากปัญหา NP-complete (หรือ -hard)
Tom van der Zanden

2
หากคุณประสบปัญหาเบื้องต้นคำถามอ้างอิงของเราอาจเป็นประโยชน์กับคุณ
Raphael

2
@hyperpallium ก่อนถามว่าภาษา (เช่นปัญหาการตัดสินใจ) อยู่ใน NP หรือไม่ดีที่สุดถ้าคุณเข้าใจความหมายของสิ่งนี้ บางทีคำถามอ้างอิงที่ Raphael เชื่อมโยงอาจช่วยได้
Yuval Filmus

คำตอบ:


9

ปัญหาของคุณจะลดลงเหลือศูนย์การทดสอบของชื่อพหุนามหลายตัวแปรซึ่งมีอัลกอริทึมแบบสุ่มที่มีประสิทธิภาพ

การแสดงออกของคุณเป็นพหุนามหลายตัวแปร เห็นได้ชัดว่านิพจน์ของคุณถูกสร้างขึ้นโดยกฎต่อไปนี้: (a) ถ้าเป็นตัวแปรดังนั้นคือนิพจน์ (b) ถ้าเป็นค่าคงตัวดังนั้นคือนิพจน์ (c) ถ้าเป็นนิพจน์ดังนั้นและเป็นนิพจน์ ถ้านั่นคือสิ่งที่คุณตั้งใจจริง ๆ ทุกการแสดงออกคือพหุนามตัวแปรหลายตัวแปรx c c e 1 , e 2 e 1 + e 2 e 1 e 2xxcce1,e2e1+e2e1e2

ทีนี้คุณอยากรู้ว่าสองนิพจน์มีค่าเท่ากันหรือไม่ จำนวนนี้ใช้สำหรับการทดสอบว่ามีหลายชื่อที่ประกอบด้วยหลายชื่อแบบหลายค่า:และคุณต้องการทราบว่าชื่อพหุนามทั้งสองนี้เทียบเท่ากันหรือไม่ คุณสามารถทดสอบสิ่งนี้ได้โดยการลบมันและตรวจสอบว่าผลลัพธ์นั้นเป็นศูนย์หรือไม่: definep 2 ( x 1 , , x n )p1(x1,,xn)p2(x1,,xn)

q(x1,,xn)=p1(x1,,xn)p2(x1,,xn).

ตอนนี้จะเทียบเท่ากันถ้าหากคือพหุนามเป็นศูนย์ qp1,p2q

การทดสอบว่าเป็นศูนย์เหมือนกันหรือไม่นั้นเป็นปัญหาการทดสอบที่เป็นศูนย์สำหรับหลายชื่อแบบหลายตัวแปร มีอัลกอริทึมที่มีประสิทธิภาพสำหรับการที่ ยกตัวอย่างเช่นอัลกอริทึมตัวอย่างหนึ่งคือการประเมินที่ค่าหลายแบบสุ่มของx_1,หากคุณพบค่าเช่นนั้นว่าคุณจะรู้ว่าไม่ได้เป็นศูนย์เหมือนกันนั่นคือจะไม่เทียบเท่ากัน หากหลังจากการทดลองหลายครั้งพวกเขาทั้งหมดเป็นศูนย์คุณสามารถสรุปได้ว่าเป็นศูนย์เหมือนกัน (ถ้าqq(x1,,xn)x1,,xnx1,,xnq(x1,,xn)qp1,p2qqไม่ได้เป็นศูนย์เหมือนกันความน่าจะเป็นที่การทดลองทั้งหมดเหล่านั้นให้ผลเป็นศูนย์นั้นต่ำมาก จำนวนของการทำซ้ำที่คุณต้องทำคือการที่เกี่ยวข้องกับการศึกษาระดับปริญญาของ ; ดูวรรณกรรมเกี่ยวกับการทดสอบเอกลักษณ์พหุนามเพื่อดูรายละเอียดq

ตัวอย่างเช่นดูhttps://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemmaและhttp://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the- Schwartz-ZIPPEL-แทรก /

อัลกอริธึมเหล่านี้มีผลบังคับใช้หากคุณกำลังทำงานในฟิลด์ จำกัด คุณไม่ได้ระบุว่าคุณกำลังทำงานอยู่ในสนาม / แหวนวงใดและไม่ว่าคุณจะรักษานิพจน์เหล่านี้เป็นนิพจน์ทางการ (เช่นพหุนามเป็นวัตถุนามธรรม) หรือเป็นหน้าที่จาก . หากคุณกำลังทำงานในฟิลด์ จำกัด วิธีการข้างต้นจะมีผลทันทีFnF

หากคุณปฏิบัติต่อนิพจน์เป็นวัตถุทางการแล้วนิพจน์ของคุณเทียบเท่ากับชื่อพหุนามหลายตัวแปรที่มีสัมประสิทธิ์จำนวนเต็ม คุณสามารถทดสอบความเท่าเทียมกันของเหล่านี้โดยการเลือกขนาดใหญ่ที่สำคัญสุ่มและการทดสอบความเท่าเทียมโมดูโลคือในสนาม{Z} ทำซ้ำพหุนามหลายครั้งด้วยค่าสุ่มที่แตกต่างกันของและคุณควรได้อัลกอริธึมแบบสุ่มที่มีประสิทธิภาพสำหรับการทดสอบความเท่ากันของนิพจน์ทางการเหล่านี้rrZ/rZr


1
ในทางตรงกันข้ามก็จะยากที่จะพิสูจน์ว่าสำหรับแต่ละเหมือนศูนย์การแสดงออกมีความไม่ยาวเกินไปหลักฐานว่าการแสดงออกเป็นเหมือนศูนย์

@RickyDemer จุดที่ดี! การสังเกตที่ดี ฉันตีความคำถามว่าถามเกี่ยวกับการทดสอบความเท่าเทียมกันมากกว่าการพิสูจน์ แต่นั่นเป็นการสังเกตที่ดีมาก (หากคุณต้องการแสดงหลักฐานการเทียบเท่าในทางปฏิบัติฉันสงสัยว่าเป็นไปได้ที่จะแสดงหลักฐานดังกล่าวหากคุณยินดีที่จะตั้งสมมติฐานการเข้ารหัสสำหรับคำจำกัดความของ "หลักฐาน" - เช่นโครงการที่บรรลุความสมบูรณ์ใน แบบจำลอง oracle แบบสุ่ม)
DW

1
ขอบคุณ! ฉันปฏิบัติต่อพวกเขาเป็นวัตถุทางการโดยไม่มีผู้รุกรานการแบ่งหรือการลบ (แต่ใช้พีชคณิตมัธยมสำหรับคำถามนี้ดูเหมือนว่าจะมีโอกาสมากขึ้นที่จะได้รับการแก้ไขแล้ว) คุณหมายถึงการเลือกสุ่มจำนวนมากและนี่คือการปฏิบัติต่อการแสดงออกราวกับว่าพวกเขาเป็นเขตข้อมูล จำกัด เหนือชุดจำนวนเต็ม ? วิกิลิงค์นั้นบอกว่าไม่มีอัลกอริธึมกำหนดค่าแบบเอ็กซ์โพเนนเชียลย่อยที่เป็นที่รู้จักสำหรับการทดสอบแบบศูนย์ คุณรู้หรือไม่ว่าสิ่งนั้นเกี่ยวข้องกับปัญหาของฉัน r[0..r1]
hyperpallium

1
@hyperpallium ใช่นั่นคือสิ่งที่ฉันหมายถึง ใช่ฉันเชื่อว่าสิ่งที่นำมาใช้กับปัญหาของคุณก็เช่นกัน นั่นเป็นเหตุผลที่ฉันแนะนำอัลกอริธึมแบบสุ่ม - มีอัลกอริธึมแบบสุ่มที่มีประสิทธิภาพแม้ว่าจะไม่มีอัลกอริธึมที่กำหนดประสิทธิภาพที่มีประสิทธิภาพ
DW

ตามที่ระบุไว้ในความคิดเห็นข้างต้น OP ไม่ทำงานในเขตข้อมูลที่ จำกัด แต่เป็น semiring เชิงซ้อน ซึ่งหมายความว่าผู้รุกรานที่เติมแต่งไม่ได้รับประกันว่าจะมีอยู่ดังนั้น "การลบ" นิพจน์เพื่อตรวจสอบความเท่าเทียมกันกับศูนย์จึงไม่ใช่การดำเนินการที่ถูกต้อง
apnorton

0

ที่จะปฏิบัติตามขึ้นไปบนไฟหนึ่ง , หนึ่งสัมประสิทธิ์และหนึ่งคงจำกัด ในคำถาม:

สิ่งเหล่านี้กำหนดเซตย่อยของปัญหาการทดสอบเอกลักษณ์พหุนาม เห็นได้ชัดว่าพวกเขาสามารถแก้ไขได้ด้วยเทคนิคที่แก้ปัญหาทั่วไป คำถามคือพวกเขาเป็นชุดย่อยที่แก้ไขได้ง่ายขึ้น

ค่าสัมประสิทธิ์เดียว : ในปัญหาที่ไม่มีสิ่งนี้อาจรวมเงื่อนไขทำให้ปัญหาง่ายขึ้น พิจารณารูปสามเหลี่ยมทวินามทฤษฎีบท / Pascal สำหรับ n นี้สามารถขยายปัจจัยหนึ่งที่เวลาการผลิตที่ทับซ้อนกันข้อตกลงกับการสั่งซื้อเช่น( + ) ( + ) = + + + = + 2 + (a+b)n(a+b)(a+b)=aa+ab+ab+bb=aa+2ab+bbเงื่อนไขการใช้บริการน้อยลงทำให้มันง่ายที่จะขยายกับปัจจัยต่อไปนี้: และคำศัพท์รวมกันอีกครั้งทำให้เกิดปัญหาที่ง่ายขึ้น การรวมคำนี้เป็นรูปแบบของการเขียนโปรแกรมแบบไดนามิก(aa+2ab+bb)(a+b)=aaa+2aab+abb+aab+2abb+bbb=aaa+3aab+3abb+bbb

นั่นคือความเป็นไปได้ของการรวมคำศัพท์การสร้างสัมประสิทธิ์ที่ไม่ใช่หนึ่งทำให้ปัญหาง่ายขึ้นไม่ยาก

(แม้ว่าจะมีงานในการคำนวณมากขึ้นในการคูณค่าสัมประสิทธิ์ที่ไม่ใช่หนึ่ง)

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

พลังเดียวฉันไม่คิดว่ามันจะสร้างความแตกต่าง แม้ว่าจะไม่ใช่หนึ่งเลขยกกำลังที่สามารถสร้างขึ้นในทางที่มากกว่าหนึ่ง (เช่น4 = 2 2 = 1 3 ) และนี้สามารถนำไปสู่การซ้อนทับกันและการรวมกัน (เช่นในรูปสามเหลี่ยมทวินาม Theorm / ปาสคาลข้างต้น) ที่เกิดขึ้นจริง การรวมกันเป็นไปได้เฉพาะเมื่อได้รับอนุญาตค่าสัมประสิทธิ์ที่ไม่ใช่หนึ่งa4=a2a2=a1a3

ข้างต้นไม่ได้เป็นข้อโต้แย้งอย่างเป็นทางการหรือเข้มงวด มันวางอยู่บนสมมติฐานเกี่ยวกับสิ่งที่ทำให้ปัญหายากขึ้น แต่สำหรับฉันแล้วดูเหมือนว่าการรวมคำศัพท์ทำให้เกิดปัญหาง่ายขึ้นเท่านั้น - ดังนั้นการป้องกันสิ่งนี้ด้วยข้อ จำกัดสัมประสิทธิ์อย่างเดียวจะไม่ทำให้เซตย่อยง่ายขึ้น

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