อัลกอริธึมเวลาแบบเอ็กซ์โพเนนเชียลกรณีทั่วไปในซอฟต์แวร์การผลิตเป็นอย่างไร


11

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


1
ความประทับใจของฉันคือว่าสำหรับสิ่งที่ต้องการปัญหาพนักงานขายที่เดินทางหนึ่งคูอัลกอริทึมเวลาชี้แจงและแทนที่จะไปกับการแก้ปัญหาที่ดีมาก (ในกรณีของพนักงานขายที่เดินทางที่พวกเขาเป็นสิ่งที่ดีมาก)
soandos

จำนวนมากของปัญหาที่แก้ไขได้ด้วยขั้นตอนวิธีการ "ชี้แจง" (TSP, CDS, ILP และอื่น ๆ ) เป็นเพียงว่าอัลกอริธึมแบบเอ็กซ์โปเนนเชียลนั้นมีการวิเคราะห์พฤติกรรมที่ดีดังนั้นพวกมันจึงทำงานอย่างมีเหตุผลด้วยข้อมูลจำนวนมากในโลกแห่งความเป็นจริง คำถามที่ดีกว่าบางทีอาจจะมี "วิธีทั่วไปทั่วไปกรณีขั้นตอนวิธีการชี้แจงเวลาในการผลิตซอฟต์แวร์?"
user541686

ปรับคำถาม
World Engineer

นักเดินทางที่เดินทางคือ n !, ไม่ได้อธิบาย
281377

1
@ user281377: มันอยู่ในO (n ^ 2 2 ^ n)ดังนั้นใช่แล้วมันเป็นปัญหาแบบเลขชี้กำลัง สิ่งนี้ยังชัดเจนเนื่องจากสามารถแมปกับ SAT ในเวลาโพลีซึ่งสามารถแก้ไขได้ในเวลา 2 ^ n - ซึ่งใช้งานได้สำหรับปัญหา NP ทั้งหมด
Raphael

คำตอบ:


7

สิ่งที่ไม่อยู่ในซอฟแวร์การผลิต แต่ทำในซอฟแวร์การผลิตการตรวจสอบอย่างเป็นทางการ อาจไม่ได้รับการปรับใช้สำหรับซอฟต์แวร์ลูกค้าส่วนใหญ่ แต่ได้รับการติดตามสำหรับระบบฝังตัวและไดรเวอร์ที่ฝังตัวนั่นคือสำหรับฮาร์ดและซอฟต์แวร์ที่มีความถูกต้องเป็นสิ่งสำคัญ

ปัญหา verficiation เหล่านั้นที่คำนวณได้จริง (barrier # 1) มักจะเป็นEXPTIME - hard ในกรณีที่โชคดีกว่าคุณจะได้รับPSPACE - ปัญหาที่ไม่สมบูรณ์ (barrier # 2) ทั้งสองคลาสนั้น (สงสัยว่าจะเป็น) หนักกว่าปัญหาที่เกิดจากปัญหา NP-complete ซึ่งเปรียบเทียบได้ง่าย นอกจากนี้ยังมีปัญหาทวีคูณแบบทวีคูณอีกด้วย

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


5

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


5

ล่ามภาษาการเขียนโปรแกรมนั้นแย่กว่าเวลาเอ็กซ์โพเนนเชียล (ตามความยาวของอินพุตเช่นความยาวของโปรแกรมที่พวกเขากำลังตีความ) และพวกมันค่อนข้างธรรมดา อีกตัวอย่างหนึ่งคือทฤษฎีบทอัตโนมัติพิสูจน์ / แก้ไขข้อ จำกัด / sat แก้ / โปรแกรมเชิงเส้นจำนวนเต็ม และอีกตัวอย่างหนึ่งก็คือความแตกต่างของสัญลักษณ์ที่นำมาใช้ในเช่น Maple / Mathematica (แม้ว่าคุณจะสามารถสร้างความแตกต่างเชิงสัญลักษณ์ในเวลาเชิงเส้นได้หากคุณได้รับอนุญาตให้แชร์ subexpressions ระหว่างโหนด)


1

ขอยกตัวอย่างปัญหาการเดินทางของพนักงานขาย ฉันทำงานกับมันสองสามครั้ง

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

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

พวกเขาเป็นเรื่องธรรมดา? อย่างน้อยก็เหมือนกันกับจำนวนคำขอบริการหลังการขายที่มาจากลูกค้า ตัวอย่างเช่นหากไม่มีบริการหลังการขายการรักษาลูกค้าจะเป็นเรื่องยากและการหาลูกค้าใหม่จะยากขึ้น

ด้วยร้านค้าบนเว็บจำนวนมากเช่น Amazon และร้านหนังสืออื่น ๆ และร้านค้าอื่น ๆ ที่ทำธุรกิจได้ดีฉันคิดว่าพนักงานขายที่เดินทางเป็นเรื่องธรรมดามากกว่าที่เคยเป็นมา นอกจากนี้อาจมีปัญหาของพนักงานขายที่เดินทางหลายรูปแบบที่สอนในหนังสือเรียน


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