ฉันเพิ่งเล่นเกมThe Logical Journey of the Zoombinisเมื่อไม่นานมานี้และพยายามใช้อัลกอริธึมคอมพิวเตอร์บางอย่างที่สามารถไขปริศนาต่าง ๆ ได้ ฉันติดอยู่กับวิธีเข้าหาปริศนาเรือข้ามฟากของกัปตันคาจุน
สำหรับผู้ที่ไม่คุ้นเคย Zoombini เป็นสิ่งมีชีวิตที่มี 4 คุณลักษณะ: ผม, ตา, จมูกและเท้า แต่ละแอตทริบิวต์เหล่านั้นมี 5 ค่าที่เป็นไปได้ ตัวอย่างเช่นเท้าของ Zoombini สามารถเป็นล้อโรลเลอร์สเกตรองเท้าผ้าใบสปริงหรือใบพัด นี่คือตัวอย่างของ Zoombini ที่มีผมยุ่งแว่นตาจมูกสีเขียวและรองเท้าผ้าใบ:
ในจิ๊กซอว์แพขนานยนต์ภารกิจคือการจัดคอลเลคชั่น 16 Zoombinis บนที่นั่ง 16 ที่นั่งของเรือข้ามฟาก ข้อตกลงดังกล่าวจะต้องปฏิบัติตามกฎว่าจะต้องมี Zoombinis ซึ่งมีที่นั่งอย่างน้อยหนึ่งที่นั่งที่อยู่ติดกัน หาก Zoombinis สองคนมีผมที่แตกต่างกันดวงตาที่แตกต่างกันจมูกที่แตกต่างกันและเท้าที่แตกต่างจากกันพวกเขาอาจไม่ได้อยู่ติดกัน
การจัดเรียงที่นั่งเปลี่ยนแปลงตามระดับ เพื่อความเป็นรูปเป็นร่างเรามามุ่งเน้นที่ระดับ "ยากมาก" ซึ่งมี 16 ที่นั่งที่จัดเรียงในตาราง 4-by-4 นี่คือตัวอย่างที่ 15 Zoombinis ถูกกฎหมายนั่ง แต่ Zoombini สุดท้ายที่ยืนอยู่บนท่าเรือไม่สามารถวางบนที่นั่งว่างสุดท้ายได้เพราะเธอจะไม่แบ่งปันคุณสมบัติกับ Zoombini ทางขวา:
มี 16! Zoom 21 ล้านล้านตำแหน่งที่เป็นไปได้ของ Zoombinis สู่ที่นั่ง ดังนั้นเพียงแค่วิ่งผ่านการมอบหมายที่เป็นไปได้ทุกอย่างเพื่อดูว่ามันถูกกฎหมายหรือไม่ ฮิวริสติกบางอย่างที่ฉันอาจใช้เพื่อแก้ไขปัญหานี้อย่างสมเหตุสมผลคืออะไร
Subgraph Isomorphism Problem
หากคุณมีความพร้อมและยินดีที่จะขุดผ่านบางวรรณกรรมที่ซับซ้อนมากขึ้นแล้วคุณจะพบข้อมูลที่เป็นประโยชน์โดยการค้นหา ปัญหาคือการหากราฟหนึ่งในกราฟอื่น ในกรณีของคุณกราฟย่อยจะเป็นที่นั่ง (ขอบเป็นคำคุณศัพท์) ในขณะที่กราฟหลักจะเป็น zoombinis โดยที่การเชื่อมต่อนั้นจะมีลักษณะที่ใช้ร่วมกัน โปรดทราบว่าโดยทั่วไปแล้วปัญหานี้เกิดจากปัญหา NP-complete และมักจะทำโดยการย้อนรอยด้วยเช่นกันอย่างไรก็ตามสำหรับกรณีพิเศษบางอย่าง (ซึ่งกราฟของคุณอาจดีมาก) สามารถแก้ปัญหาพหุนามหรือเชิงเส้นได้