อัลกอริทึมการแก้ได้ของ Mahjong: ทำงานอย่างไร

อัลกอริทึมการแก้ได้ของ Mahjong: ทำงานอย่างไร

Person studying Mahjong board and algorithm notes

อัลกอริทึมการแก้ได้ของ Mahjong คือกระบวนการตัดสินใจที่กำหนดว่ากระดาน Mahjong solitaire ที่กำหนดสามารถเคลียร์ออกได้ทั้งหมดหรือไม่ โดยการจับคู่และนำไพ่เป็นคู่ ๆ ออกตามลำดับตามกติกา การทำความเข้าใจว่าอัลกอริทึมการแก้ได้ของ Mahjong คืออะไร หมายถึงการเผชิญหน้ากับหนึ่งในปัญหาที่น่าสนใจที่สุดของทฤษฎีเกมเชิงคอมบิเนทอเรียล: ปัญหานี้ถูกจัดว่า NP-complete ภายใต้ข้อมูลสมบูรณ์ ซึ่งหมายความว่ายังไม่มีอัลกอริทึมใดที่แก้ได้อย่างมีประสิทธิภาพสำหรับทุกการจัดวางที่เป็นไปได้ ซอฟต์แวร์จริงจึงหลีกเลี่ยงข้อจำกัดนี้ด้วยฮิวริสติก วนลองใหม่ และกลยุทธ์สำรอง ช่องว่างระหว่างความยากในเชิงทฤษฎีกับการเล่นได้จริงคือจุดที่งานวิศวกรรมที่มีประโยชน์ที่สุดเกิดขึ้น

ความซับซ้อนเชิงคำนวณบอกอะไรเราเกี่ยวกับการแก้ได้ของ Mahjong?

ความซับซ้อนเชิงคำนวณคือการศึกษาตามหลักการว่าปัญหาหนึ่งยากเพียงใดสำหรับคอมพิวเตอร์ในการแก้ มีสองคลาสความซับซ้อนที่สำคัญที่สุดในที่นี้: NP และ PSPACE

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

PSPACE-complete เป็นคลาสที่ยากยิ่งกว่า การเพิ่มโอกาสในการนำไพ่ออกให้มากที่สุดเป็น PSPACE-complete และ PSPACE-hard ที่จะประมาณค่าให้ใกล้เคียงภายในตัวคูณของ n ที่ยกกำลังด้วยค่าคงที่บวกใด ๆ ผลลัพธ์นี้ตัดความเป็นไปได้ของแม้แต่คำตอบแบบประมาณที่ทำงานในเวลาพหุนาม เว้นแต่สมมติฐานพื้นฐานของทฤษฎีความซับซ้อนจะพังทลายลง

นี่คือความหมายของผลลัพธ์ทั้งสองในทางปฏิบัติ:

  • เวอร์ชันเชิงตัดสินใจ (กระดานนี้เคลียร์ได้หรือไม่?) เป็น NP-complete ตัวแก้แบบแม่นยำต้องเผชิญเวลาที่แย่ที่สุดแบบเอ็กซ์โปเนนเชียล
  • เวอร์ชันเชิงเพิ่มประสิทธิภาพ (ลำดับใดทำให้โอกาสเคลียร์สูงสุด?) เป็น PSPACE-complete ซึ่งยากกว่าเวอร์ชันเชิงตัดสินใจอย่างชัดเจน
  • การตรวจสอบการแก้ได้แบบแม่นยำต้องใช้การคำนวณที่แย่ที่สุดแบบเอ็กซ์โปเนนเชียลหรือใช้หน่วยความจำสูงมาก ตัวแก้ที่ใช้งานจริงจึงพึ่งฮิวริสติกหรือข้อจำกัดของเลย์เอาต์แทน
  • การแก้ได้ขึ้นอยู่กับการกำหนดปัญหาและโมเดลเกม ไม่มีอัลกอริทึมสากลที่ใช้ได้กับ Mahjong ทุกเวอร์ชัน

บทเรียนหลักจากทฤษฎีความซับซ้อนไม่ใช่ว่า Mahjong แก้ไม่ได้ แต่คือการแก้ อย่างแม่นยำ สำหรับกระดานใด ๆ นั้นมีต้นทุนเชิงคำนวณสูงมากจนเอนจินเกมที่ใช้งานจริงไม่พยายามทำโดยตรง

ความแตกต่างนี้กำหนดทุกการตัดสินใจด้านการออกแบบในซอฟต์แวร์ Mahjong นักพัฒนาไม่รอคำตอบที่พิสูจน์ได้ว่าถูกต้องแน่นอน แต่สร้างระบบที่สร้างกระดานที่แก้ได้ด้วยความน่าจะเป็นสูง แล้วจึงตรวจสอบแทนที่จะพิสูจน์

การสร้างแบบจำลองการแก้ได้ทำอย่างไร และทำไมการระเบิดเชิงคอมบิเนทอเรียลจึงสำคัญ?

Engineer coding Mahjong algorithm in office

โครงสร้างทางคณิตศาสตร์ของ Mahjong solitaire อยู่ที่การจับคู่ไพ่ ไพ่แต่ละใบอยู่ในหนึ่งใน 36 หมวดหมู่ และแต่ละหมวดมีไพ่ทั้งหมด 4 ใบพอดี เพื่อเคลียร์กระดาน ไพ่ทุกใบต้องถูกจับคู่กับหนึ่งในไพ่ที่เหมือนกันอีก 3 ใบ

นี่คือความท้าทายเชิงคอมบิเนทอเรียลหลักทีละขั้น:

  1. นับตัวเลือกการจับคู่ สำหรับกลุ่มไพ่เหมือนกัน 4 ใบ จะมีวิธีจับคู่เป็นสองคู่ที่ตรงกันได้พอดี 3 วิธี
  2. คูณข้ามทุกหมวดหมู่ เมื่อมี 36 หมวดหมู่ และแต่ละหมวดมี 3 ตัวเลือก จำนวนรูปแบบการจับคู่ทั้งหมดคือ 3^36 หรือประมาณ 1.5 × 10^17 หรือราว 150 ล้านล้านล้านชุด
  3. ตระหนักว่าการค้นหาแบบไล่ครบทุกกรณีเป็นไปไม่ได้ การตรวจทุกการจัดวาง แม้ด้วยอัตรา 1 พันล้านการดำเนินการต่อวินาที จะใช้เวลามากกว่าสี่ปีของการคำนวณต่อเนื่อง เอนจินเกมใดก็รับภาระนี้ต่อหนึ่งกระดานไม่ไหว
  4. แยกการจับคู่ออกจากลำดับการเดิน ลำดับการนำไพ่ออกไม่ส่งผลต่อผลลัพธ์สุดท้ายของการแก้ได้เมื่อกำหนดการจับคู่แล้ว นี่คือข้อสังเกตสำคัญ ซึ่งหมายความว่าพื้นที่การค้นหาถูกกำหนดโดยตัวเลือกการจับคู่ ไม่ใช่ลำดับของการเดิน
  5. โฟกัสการค้นหาไปที่รูปแบบการจับคู่ การลดพื้นที่สถานะด้วยการนิยามเกมใหม่ให้เป็นปัญหาความสัมพันธ์ระหว่างการจับคู่และการนำออก ช่วยลดความซับซ้อน พื้นที่ยังคงใหญ่ แต่จัดการได้มากกว่าการติดตามลำดับการเดินที่เป็นไปได้ทุกแบบ
  6. ใช้การบีบอัดล่วงหน้า ตัวแก้ที่มีประสิทธิภาพจะโฟกัสว่าไพ่ใบใดเข้าถึงได้จากเลย์เอาต์ปัจจุบัน โดยตัดกิ่งที่ไพ่ถูกบังจนไม่สามารถจับคู่ได้จริง ไม่ว่าตัวเลือกการจับคู่เชิงนามธรรมจะเป็นอย่างไร

เคล็ดลับ: เมื่อวิเคราะห์กระดาน Mahjong ด้วยตนเอง ให้คิดในแง่ของข้อผูกมัดในการจับคู่มากกว่าการเดินทีละตา ระบุว่าไพ่ใบใดมีคู่ที่เข้าถึงได้เพียงใบเดียว แล้วล็อกการจับคู่นั้นก่อน วิธีนี้สะท้อนวิธีที่ตัวแก้เชิงอัลกอริทึมตัดกิ่งของต้นไม้การค้นหา

การระเบิดเชิงคอมบิเนทอเรียลทำให้การค้นหาแบบไล่ครบทุกกรณีไม่คุ้มค่า ความจริงข้อนี้บังคับให้การใช้งานจริงทุกแบบหันไปใช้ฮิวริสติกและกลยุทธ์ลองใหม่แบบสุ่มแทนการไล่ครบทั้งหมด การเข้าใจข้อจำกัดนี้คือรากฐานของอัลกอริทึม Mahjong ที่อธิบายในบริบทซอฟต์แวร์จริงจัง

Infographic showing Mahjong solvability process steps

การใช้งานจริงสร้างกระดาน Mahjong ที่แก้ได้อย่างไร?

ซอฟต์แวร์ Mahjong ระดับใช้งานจริงไม่ได้พยายามพิสูจน์การแก้ได้จากหลักการพื้นฐาน แต่จะตรวจสอบการแก้ได้ผ่านระบบสองชั้นที่ผสานการสร้างกระดานอย่างรวดเร็วกับตัวแก้ที่ตรวจผลลัพธ์

สถาปัตยกรรมมาตรฐานทำงานดังนี้:

  • ชั้นที่ 1: การสร้างแบบเชิงประกอบ เอนจินสร้างกระดานด้วยวิธีที่ออกแบบมาให้ได้เลย์เอาต์ที่แก้ได้ วิธีนี้รวดเร็วแต่ไม่รับประกันว่าจะสำเร็จทุกครั้ง
  • ชั้นที่ 2: การตรวจสอบการแก้ได้ ตัวแก้จะทำงานบนกระดานที่สร้างขึ้น หากกระดานไม่ผ่านการตรวจสอบ เอนจินจะลองใหม่
  • วนลองใหม่ การใช้งานทั่วไป จะรัน buildSolvableWithRetries สูงสุด 2,000 ครั้งก่อนเปลี่ยนไปใช้กลยุทธ์อื่น ตัวเลขนี้มาจากการปรับจูนเชิงประจักษ์ ไม่ใช่ความจำเป็นทางทฤษฎี
  • กลยุทธ์ทางเลือก หลังใช้โควตาลองใหม่หลักจนหมด เอนจินจะเปลี่ยนไปใช้อัลกอริทึมการสร้างแบบอื่นที่มีวงลองใหม่ของตัวเอง
  • สำรองด้วยกระดานสุ่ม หากทุกอย่างล้มเหลว เอนจินจะสร้างกระดานแบบสุ่มและรันการตรวจสอบการแก้โดยตรง วิธีนี้รับประกันว่าจะส่งมอบกระดานที่เล่นได้เสมอ

เคล็ดลับ: หากคุณกำลังสร้างตัวสร้างปริศนา Mahjong ให้เริ่มด้วยแนวทางสร้างย้อนกลับ: วางไพ่ในลำดับที่รู้ว่าแก้ได้ แล้วค่อยสับภายใต้ข้อจำกัด วิธีนี้ช่วยลดจำนวนครั้งที่ต้องลองใหม่ก่อนจะพบกระดานที่ถูกต้องได้อย่างมาก

ตารางด้านล่างสรุปรูปแบบการสำรองสามขั้นที่ใช้ในโค้ดฐานระดับใช้งานจริง:

ขั้นวิธีขีดจำกัดการลองใหม่ตัวกระตุ้นการสำรอง
หลักตัวสร้างแบบเชิงประกอบที่แก้ได้สูงสุด 2,000 ครั้งการตรวจสอบของตัวแก้ล้มเหลว
รองกลยุทธ์การสร้างแบบอื่นปรับได้โควตาหลักหมด
ตติยภูมิกระดานสุ่มพร้อมตรวจสอบการแก้ผ่านครั้งเดียวกลยุทธ์รองล้มเหลว

ระบบสองชั้นนี้ที่มีการลองใหม่ซ้ำ ๆ และกลยุทธ์สำรอง คือมาตรฐานการใช้งานจริงสำหรับการส่งมอบกระดานปริศนาที่แก้ได้ แนวคิดเชิงวิศวกรรมในที่นี้ตั้งใจชัดเจน: ไม่ต้องพิสูจน์การแก้ได้ล่วงหน้า สร้างให้เร็ว ตรวจสอบให้ไว และลองใหม่เมื่อจำเป็น แนวทางนี้สอดคล้องกับสิ่งที่ทฤษฎีความซับซ้อนคาดการณ์ไว้ การพิสูจน์แบบแม่นยำมีราคาแพง การตรวจสอบมีต้นทุนต่ำ

ความรู้เรื่องการแก้ได้ช่วยปรับปรุงกลยุทธ์และการออกแบบเกม Mahjong อย่างไร?

การเข้าใจว่าการแก้ได้ทำงานอย่างไร เปลี่ยนทั้งวิธีที่นักพัฒนาสร้างเกมและวิธีที่ผู้เล่นเข้าหาการแก้ปริศนา Mahjong มุมมองทั้งสองเสริมกันและกัน

จากมุมมอง กลยุทธ์ผู้เล่น ข้อมูลเรื่องการแก้ได้แปลตรงไปสู่การตัดสินใจที่ดีขึ้น:

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

จากมุมมอง การออกแบบเกม อัลกอริทึมการแก้ได้กำหนดคุณภาพของประสบการณ์ผู้เล่น:

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

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

ประเด็นสำคัญ

อัลกอริทึมการแก้ได้ของ Mahjong เป็น NP-complete สำหรับปัญหาเชิงตัดสินใจ และ PSPACE-complete สำหรับปัญหาเชิงเพิ่มประสิทธิภาพ ทำให้วิธีแบบฮิวริสติกและการลองใหม่เป็นเส้นทางที่ใช้งานได้จริงเพียงทางเดียวสู่กระดานที่แก้ได้ในซอฟต์แวร์ระดับใช้งานจริง

ประเด็นรายละเอียด
คลาสความซับซ้อนสำคัญการตัดสินว่ากระดานแก้ได้หรือไม่เป็น NP-complete; การเพิ่มโอกาสชนะให้สูงสุดเป็น PSPACE-complete และประมาณค่าได้ยากกว่า
การระเบิดเชิงคอมบิเนทอเรียลมีอยู่จริงด้วยรูปแบบการจับคู่ที่เป็นไปได้ 3^36 แบบ การค้นหาแบบไล่ครบทุกกรณีจึงเป็นไปไม่ได้ในระบบเรียลไทม์ใด ๆ
ลำดับการเดินเป็นเรื่องรองการแก้ได้ขึ้นอยู่กับตัวเลือกการจับคู่ในแต่ละหมวดไพ่ ไม่ใช่ลำดับของการเดินทีละตา
ระบบระดับใช้งานจริงตรวจสอบ ไม่ได้พิสูจน์การใช้งานจริงใช้ตัวสร้างเชิงประกอบร่วมกับการตรวจสอบของตัวแก้ พร้อมลองใหม่ได้สูงสุด 2,000 ครั้งและมีขั้นสำรอง
กลยุทธ์ผู้เล่นสะท้อนตรรกะของอัลกอริทึมการให้ความสำคัญกับไพ่ที่มีคู่ให้เลือกน้อยและหลีกเลี่ยงการแยกกลุ่มไพ่ สะท้อนวิธีที่ตัวแก้การแก้ได้ตัดกิ่งของต้นไม้การค้นหาโดยตรง

ทำไมทฤษฎีเพียงอย่างเดียวจึงไม่ช่วยให้คุณสร้างเกม Mahjong ที่ดีกว่า

ผมใช้เวลามากพอสมควรในการวิเคราะห์ว่าการแก้ได้ของ Mahjong ถูกนำไปใช้อย่างไรในทางปฏิบัติ และช่องว่างระหว่างผลลัพธ์ความซับซ้อนเชิงวิชาการกับสิ่งที่วิศวกรส่งมอบจริงนั้นน่าทึ่งมาก หลักฐาน NP-complete และ PSPACE-complete นั้นน่าพึงพอใจในเชิงปัญญา มันบอกคุณบางอย่างที่จริงและสำคัญเกี่ยวกับปัญหา แต่ไม่ได้บอกวิธีสร้างเกมที่ผู้เล่นสนุก

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

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

คำแนะนำของผมสำหรับใครก็ตามที่อยากทำการตรวจสอบการแก้ได้: อย่าเริ่มจากวรรณกรรมด้านความซับซ้อน ให้เริ่มจากวงลองใหม่ที่ใช้งานได้จริง ติดเครื่องมือวัดว่าขั้นสำรองแต่ละชั้นถูกเรียกใช้บ่อยแค่ไหน แล้วค่อยปรับจากตรงนั้น ทฤษฎีบอกเพดานให้คุณ การวัดผลบอกว่าคุณอยู่ตรงไหนจริง ๆ

— Dmytro Romaniuk

เล่นปริศนา Mahjong ที่สร้างบนการสร้างกระดานซึ่งแก้ได้

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

https://mahjong-online.club

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

คำถามที่พบบ่อย

อัลกอริทึมการแก้ได้ของ Mahjong คืออะไร?

อัลกอริทึมการแก้ได้ของ Mahjong คือกระบวนการเชิงคำนวณที่กำหนดว่ากระดาน Mahjong solitaire สามารถเคลียร์ออกได้ทั้งหมดหรือไม่ โดยการจับคู่และนำไพ่ทุกคู่ที่ตรงกันออก เวอร์ชันเชิงตัดสินใจของปัญหานี้ถูกจัดว่าเป็น NP-complete ภายใต้ข้อมูลสมบูรณ์

การแก้ได้ของ Mahjong ทำงานอย่างไรในเชิงคณิตศาสตร์?

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

ทำไมซอฟต์แวร์จึงไม่สามารถแก้กระดาน Mahjong ได้อย่างแม่นยำทุกครั้ง?

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

ความแตกต่างระหว่าง np-complete และ pspace-complete ใน Mahjong คืออะไร?

ปัญหาเชิงตัดสินใจ (กระดานนี้เคลียร์ได้หรือไม่?) เป็น NP-complete ส่วนปัญหาเชิงเพิ่มประสิทธิภาพ (ลำดับใดทำให้โอกาสเคลียร์สูงสุด?) เป็น PSPACE-complete ซึ่งเป็นคลาสที่ยากกว่าอย่างชัดเจนและยังตัดความเป็นไปได้ของอัลกอริทึมประมาณค่าอย่างมีประสิทธิภาพด้วย

กลยุทธ์เกม Mahjong เชื่อมโยงกับอัลกอริทึมการแก้ได้อย่างไร?

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

แนะนำ

บทความที่คล้ายกัน

ไพ่ Mahjong วงกลมทำงานอย่างไร: คู่มือสำหรับผู้เริ่มต้น

ไพ่ Mahjong วงกลมทำงานอย่างไร: คู่มือสำหรับผู้เริ่มต้น

ค้นพบว่าไพ่ Mahjong วงกลมทำงานอย่างไรในคู่มือสำหรับผู้เริ่มต้นนี้ ฝึกฝนชุดไพ่ Dots เพื่อยกระดับกลยุทธ์การเล่นและชนะได้มากขึ้น!

กติกา Riichi mahjong: คู่มือสำหรับผู้เริ่มต้นแบบทีละขั้นตอน

กติกา Riichi mahjong: คู่มือสำหรับผู้เริ่มต้นแบบทีละขั้นตอน

คู่มือผู้เชี่ยวชาญเกี่ยวกับกติกา Riichi mahjong พร้อมคำแนะนำทีละขั้นตอน พื้นฐานการคิดคะแนน และเคล็ดลับระดับโปร ข้อมูลอ้างอิงที่เชื่อถือได้จากข้อมูลจริง และตัวอย่างที่ใช้งานได้จริง

รายการ yaku ของ Riichi Mahjong: ตัวอย่าง คะแนน และเคล็ดลับ

รายการ yaku ของ Riichi Mahjong: ตัวอย่าง คะแนน และเคล็ดลับ

คู่มือผู้เชี่ยวชาญเกี่ยวกับรายการ yaku ของ Riichi Mahjong พร้อมตัวอย่างที่ชัดเจน คะแนน และการคิดคะแนน เคล็ดลับจากข้อมูลจริงและมุมมองระดับโปรเพื่อปรับปรุงผลลัพธ์ได้อย่างรวดเร็ว