วันที่ 29 มกราคมเป็นวันปริศนาแห่งชาติ และเพื่อเป็นการเฉลิมฉลอง เราได้สร้างบล็อกสนุกๆ ที่ให้รายละเอียดเกี่ยวกับวิธีการแก้ซูโดกุโดยใช้ปัญญาประดิษฐ์ (AI)
บทนำ
ก่อน คำที่ ปริศนาซูโดกุ เป็นความเดือดดาลและยังคงได้รับความนิยมอย่างมาก ในปีที่ผ่านมาการใช้ การเพิ่มประสิทธิภาพ วิธีการแก้ปริศนาเป็นหัวข้อหลัก ดู “การแก้ปริศนา Sudoku โดยใช้การเพิ่มประสิทธิภาพใน Arkieva"
ในยุคปัจจุบัน การใช้ AI มุ่งเน้นไปที่การเรียนรู้ของเครื่องซึ่งครอบคลุมวิธีการที่หลากหลายตั้งแต่การถดถอยแบบ Lasso ไปจนถึงการเรียนรู้แบบเสริมกำลัง การใช้งานของเอไอได้ กลับมาอีกครั้ง เพื่อจัดการกับความซับซ้อน การกำหนด ความท้าทาย วิธีหนึ่งที่ใช้กันทั่วไปคือการค้นหาแบบย้อนรอยและเหมาะสำหรับ Sudoku
บล็อกนี้จะให้คำอธิบายโดยละเอียดเกี่ยวกับวิธีการใช้วิธีนี้เพื่อแก้ Sudoku ปรากฎว่า "การย้อนรอย" สามารถพบได้ภายในกลไกการเพิ่มประสิทธิภาพและการเรียนรู้ของเครื่อง และเป็นรากฐานสำคัญของการวิเคราะห์พฤติกรรมขั้นสูงที่ Arkieva ใช้ในการกำหนดเวลา อัลกอริทึมถูกนำไปใช้ใน “Array Programming Language” ซึ่งเป็นภาษาการเขียนโปรแกรมเชิงฟังก์ชันที่จัดการ ชุดโครงสร้างอาเรย์ที่หลากหลาย.
พื้นฐานของซูโดกุ
จากวิกิพีเดีย: Sudoku เป็นเกมไขปริศนาการวางตำแหน่งตัวเลขแบบใช้ตรรกะ วัตถุประสงค์คือการเติมตัวเลขลงในตาราง 9×9 เพื่อให้แต่ละคอลัมน์ แต่ละแถว และแต่ละตารางย่อยขนาด 3×3 จำนวน 1 ตารางที่ประกอบเป็นตาราง (เรียกอีกอย่างว่า "กล่อง" "บล็อก" "ภูมิภาค" หรือ "ช่องสี่เหลี่ยมย่อย") ประกอบด้วยตัวเลขทั้งหมดตั้งแต่ 9 ถึง 9 ตัวต่อปริศนาจะมีตารางที่เสร็จสมบูรณ์บางส่วน ซึ่งโดยทั่วไปจะมีวิธีแก้ปัญหาเฉพาะ ปริศนาที่เสร็จสมบูรณ์มักเป็นประเภทของจัตุรัสละตินที่มีข้อจำกัดเพิ่มเติมเกี่ยวกับเนื้อหาของแต่ละภูมิภาค ตัวอย่างเช่น จำนวนเต็มเดี่ยวเดียวกันอาจไม่ปรากฏสองครั้งในแถวหรือคอลัมน์กระดานเล่นขนาด 9×3 เดียวกัน หรือในภูมิภาคย่อย 3×9 เก้าภูมิภาคใด ๆ ของกระดานเล่นขนาด 9×XNUMX
ตารางที่ 1 มีปัญหาตัวอย่าง มี 9 แถว 9 คอลัมน์ รวมเป็น 81 เซลล์ แต่ละรายการได้รับอนุญาตให้มีจำนวนเต็มเก้าจำนวนเพียงหนึ่งหรือเพียงหนึ่งในเก้าระหว่าง 1 ถึง 9 ในวิธีแก้ปัญหาเริ่มต้น เซลล์จะมีค่าเดียว ซึ่งจะแก้ไขค่าในเซลล์นี้เป็นค่านั้น หรือเซลล์ว่างเปล่า ซึ่งบ่งชี้ว่าเราต้องการ เพื่อค้นหาค่าสำหรับเซลล์นี้ เซลล์ (1,1) มีค่า 2 และเซลล์ (6,5) มีค่า 6 เซลล์ (1,2) และเซลล์ (2,3) ว่างเปล่า และอัลกอริทึมจะค้นหาค่าสำหรับเซลล์เหล่านี้
ภาวะแทรกซ้อน
นอกจากจะเป็นของแถวและคอลัมน์เดียวเท่านั้น เซลล์ยังอยู่ในกล่องเดียวเท่านั้น มีกล่องอยู่ 1 กล่อง และจะมีการระบุด้วยสีในตารางที่ 9 ตารางที่ 1 ใช้จำนวนเต็มเฉพาะระหว่าง 2 ถึง 1 เพื่อระบุแต่ละกล่องหรือตาราง เซลล์ที่มีค่าแถวเป็น (9, 1 หรือ 2) และค่าคอลัมน์เป็น (3, 1 หรือ 2) อยู่ในกล่อง 3 กล่อง 1 คือค่าแถวเป็น (6, 4, 5) และค่าคอลัมน์ (6, 7 , 8) รหัสกล่องถูกกำหนดโดยสูตร BOX_ID = {9x(floor((ROW_ID-3) /1)} + เพดาน (COL_ID/3) สำหรับเซลล์ (3), 5,7 = 6x(floor(3-5) ))/1) + เพดาน (3/8)= 3×3 + 1 = 3+3
หัวใจแห่งปริศนา
เมื่อต้องการค้นหาค่าจำนวนเต็มหนึ่งค่าระหว่าง 1 ถึง 9 สำหรับแต่ละเซลล์ที่ไม่รู้จัก โดยจะใช้จำนวนเต็ม 1 ถึง 9 เพียงครั้งเดียวสำหรับแต่ละคอลัมน์ แต่ละแถว และแต่ละกล่อง
ลองดูเซลล์ (1,3) ที่ว่างเปล่า แถวที่ 1 มีค่า 2 และ 7 อยู่แล้ว ไม่อนุญาตให้ใช้ค่าเหล่านี้ในเซลล์นี้ คอลัมน์ 3 มีค่า 3, 5,6, 7,9 แล้ว สิ่งเหล่านี้ไม่ได้รับอนุญาต ช่องที่ 1 (สีเหลือง) มีค่า 2, 3 และ 8 ซึ่งไม่ได้รับอนุญาต ไม่อนุญาตให้ใช้ค่าต่อไปนี้ (2,7); (3, 5, 6, 7, 9); (2, 3, 8) ค่าเฉพาะที่ไม่อนุญาตคือ (2, 3, 5, 6, 7, 8, 9) ค่าที่เป็นตัวเลือกเพียงอย่างเดียวคือ (1,4)
วิธีแก้ไขคือกำหนด 1 ให้กับเซลล์ (1,3) ชั่วคราว จากนั้นลองค้นหาค่าที่เป็นตัวเลือกสำหรับเซลล์อื่น
โซลูชันการย้อนรอย: การเริ่มต้นส่วนประกอบ
โครงสร้างอาร์เรย์
จุดเริ่มต้นคือการตัดสินใจเกี่ยวกับโครงสร้างอาร์เรย์เพื่อจัดเก็บปัญหาต้นทางและสนับสนุนการค้นหา ตารางที่ 3 มีโครงสร้างอาร์เรย์นี้ คอลัมน์ 1 เป็นรหัสจำนวนเต็มที่ไม่ซ้ำกันสำหรับแต่ละเซลล์ ค่ามีตั้งแต่ 1 ถึง 81 คอลัมน์ 2 คือ ID แถวของเซลล์ คอลัมน์ 3 คือรหัสคอลัมน์ของเซลล์ คอลัมน์ 4 คือรหัสกล่อง คอลัมน์ 5 คือค่าในเซลล์ การสังเกตเซลล์ที่ไม่มีค่าจะได้รับค่าเป็นศูนย์แทนที่จะเป็นค่าว่างหรือค่าว่าง สิ่งนี้ทำให้สิ่งนี้เป็น "อาร์เรย์จำนวนเต็มเท่านั้น" ซึ่งเหนือกว่ามากในด้านประสิทธิภาพ
ใน APL อาร์เรย์นี้จะถูกจัดเก็บไว้ในอาร์เรย์ 2 มิติโดยที่รูปร่างเป็น 81 x 5 สมมติว่าองค์ประกอบของตารางที่ 3 ถูกเก็บไว้ในตัวแปร MAT ฟังก์ชันตัวอย่างได้แก่:
คำสั่ง MAT[1 2 3;] ดึง 3 แถวแรกของ MAT
1 1 1 1 2
2 1 2 1 0
3 1 3 1 0
เสื่อ[1 2 3; 4 5] รักษาความปลอดภัยแถว 1, 2, 3 และเฉพาะคอลัมน์ 4 และ 5
1
1
1
(MAT[;5]=0)/MAT[;1] ค้นหาเซลล์ทั้งหมดที่ต้องการค่า
แทรกตารางที่ 3
การตรวจสอบความสมบูรณ์: ซ้ำกัน
ก่อนเริ่มการค้นหา การตรวจสอบสุขภาพจิตเป็นสิ่งสำคัญ! นั่นคือวิธีแก้ปัญหาเริ่มต้นที่เป็นไปได้ เป็นไปได้สำหรับซูโดกุ โดยขณะนี้มีรายการซ้ำกันในแถว คอลัมน์ หรือกล่องใดก็ได้ วิธีแก้ปัญหาเริ่มต้นปัจจุบัน เช่น 1 เป็นไปได้ ตารางที่ 4 มีตัวอย่างที่โซลูชันเริ่มต้นซ้ำกัน แถวที่ 1 มีสองค่า 2 พื้นที่ 1 มีสองค่า 2 ฟังก์ชัน “SANITY_DUPE” จัดการตรรกะนี้
การตรวจสอบสติ: ตัวเลือกสำหรับเซลล์ที่ไม่มีค่า
ข้อมูลที่มีประโยชน์มากคือค่าที่เป็นไปได้ทั้งหมดสำหรับเซลล์ที่ไม่มีค่า หากไม่มีผู้สมัคร แสดงว่าปริศนานี้ไม่สามารถไขได้ เซลล์ไม่สามารถใช้ค่าที่เพื่อนบ้านอ้างสิทธิ์ไปแล้วได้ การใช้ตารางที่ 1 สำหรับเซลล์ (1,3,'1' – 1 สุดท้ายนี้คือ boxid) เพื่อนบ้านคือแถว 1 คอลัมน์ 3 และกล่อง 1 แถว 1 มีค่า (2,7) คอลัมน์ 3 มีค่า (3,5,6,7,9); ช่องที่ 1 มีค่า (2,3,8) เซลล์ (1,3.1) ไม่สามารถใช้ค่าต่อไปนี้ (2,3,5,6,7,8,9) ตัวเลือกเดียวสำหรับเซลล์ (1,3,1) คือ (1,4) สำหรับเซลล์ (4,1,2) ค่า 1, 2, 3, 5, 6, 7, 9 ถูกใช้อยู่แล้วในแถว 4, คอลัมน์ 1 และ/หรือกล่อง 4 ค่าที่เป็นตัวเลือกเท่านั้นคือ (4,8) . ฟังก์ชัน “SANITY_CAND” จะจัดการตรรกะนี้
ตารางที่ 5 แสดงผู้สมัคร เช่น 1 ที่จุดเริ่มต้นของกระบวนการค้นหา หากเซลล์ได้รับการกำหนดค่าในเงื่อนไขเริ่มต้นแล้ว (ตารางที่ 1) ค่านี้จะถูกทำซ้ำและแสดงเป็นสีแดง หากเซลล์ที่ต้องการค่ามีเพียงตัวเลือกเดียว ตัวเลือกนี้จะแสดงเป็นสีขาว เซลล์ (8,7,9) มีค่าเดียว 7 เป็นสีขาว (2,5,8,4,3) อ้างสิทธิ์โดยคอลัมน์เพื่อนบ้าน 7 (1, 2, 9) อ้างสิทธิ์ตามแถวที่ 8 (3,2,6) ในช่อง 9 เฉพาะค่า 7 เท่านั้นที่ไม่มีการอ้างสิทธิ์
การตรวจสอบสติ: การค้นหาข้อขัดแย้ง
ข้อมูลที่ระบุตัวเลือกทั้งหมดสำหรับเซลล์ที่ต้องการค่า (โพสต์ในตารางที่ 4) ช่วยให้เราสามารถระบุข้อขัดแย้งก่อนที่จะเริ่มกระบวนการค้นหา ข้อขัดแย้งเกิดขึ้นเมื่อสองเซลล์ที่ต้องการค่ามีผู้สมัครเพียงคนเดียว ค่าผู้สมัครจะเหมือนกัน และทั้งสองเซลล์อยู่ใกล้เคียงกัน จากตารางที่ 4 เราทราบว่าเซลล์เดียวที่ต้องการค่าและมีผู้สมัครเพียงเซลล์เดียวคือเซลล์ (8,7,9) ตัวอย่างที่ 1 ไม่มีความขัดแย้ง
จะเกิดความขัดแย้งอะไร? หากค่าเดียวที่เป็นไปได้สำหรับเซลล์ (3,7,3) คือ 7 (แทนที่จะเป็น 1, 6, 7) แสดงว่ามีข้อขัดแย้ง เซลล์ (8,7) และเซลล์ (3,7) อยู่ติดกัน – คอลัมน์เดียวกัน อย่างไรก็ตาม หากค่าเดียวที่เป็นไปได้สำหรับเซลล์ (4,9,2) คือ 7 (แทนที่จะเป็น 1, 2, 7) ค่านี้ก็จะไม่เกิดข้อขัดแย้ง เซลล์เหล่านี้ไม่ใช่เพื่อนบ้าน
สรุปการตรวจสอบสุขอนามัย
- หากมีข้อมูลซ้ำกัน แสดงว่าไม่สามารถเริ่มต้นวิธีแก้ปัญหาได้
- หากเซลล์ที่ต้องการค่าไม่มีตัวเลือกใดๆ แสดงว่าไม่มีวิธีแก้ปัญหาที่เป็นไปได้สำหรับปริศนานี้ รายการค่าที่เป็นตัวเลือกสำหรับแต่ละเซลล์สามารถใช้เพื่อลดพื้นที่การค้นหา ทั้งสำหรับการย้อนรอยและการเพิ่มประสิทธิภาพ
- ความสามารถในการค้นหาข้อขัดแย้งระบุว่าปริศนานั้นเป็นไปไม่ได้ – ไม่มีวิธีแก้ปัญหา – หากไม่มีกระบวนการค้นหา นอกจากนี้ยังระบุถึง "เซลล์ปัญหา"
โซลูชันการย้อนรอย: กระบวนการค้นหา
ด้วยโครงสร้างข้อมูลหลักและการตรวจสอบความถูกต้อง เราจึงให้ความสำคัญกับกระบวนการค้นหา ธีมที่เกิดซ้ำเป็นอีกครั้ง โดยรับโครงสร้างข้อมูลเพื่อรองรับการค้นหา
ติดตามการค้นหา
อาร์เรย์ ติดตาม ติดตามการมอบหมายที่ทำ
- Col 1 คือเคาน์เตอร์
- Col 2 คือจำนวนตัวเลือกที่สามารถกำหนดให้กับเซลล์นี้ได้
- 1 หมายถึง มี 1 ตัวเลือกให้เลือก 2 หมายถึง มี XNUMX ตัวเลือก เป็นต้น
- 0 หมายถึง - ไม่มีตัวเลือกให้ใช้งานหรือรีเซ็ตเป็น 0 (ไม่ได้กำหนดค่า) และการย้อนรอย
- Col 3 คือเซลล์ที่กำหนดหมายเลขดัชนีค่า (1 ถึง 81)
- Col 4 คือค่าที่กำหนดให้กับเซลล์ในประวัติการติดตาม
- ค่า 9999 หมายความว่าเซลล์นี้เป็นเซลล์เมื่อพบทางตัน
- ค่าของจำนวนเต็มระหว่าง 1 ถึง 9 คือค่าที่กำหนดให้กับเซลล์นี้ ณ จุดนี้ในกระบวนการค้นหา
- ค่า 0 หมายความว่าเซลล์นี้ต้องมีการกำหนด
อาร์เรย์ตัวติดตามใช้เพื่อรองรับกระบวนการค้นหา อาร์เรย์ ติดตามผลงาน มีโครงสร้างเดียวกับตัวติดตาม แต่เก็บประวัติของกระบวนการค้นหาทั้งหมด ตารางที่ 6 มีส่วนของ TRACKHIST เช่น 1 ซึ่งจะอธิบายรายละเอียดเพิ่มเติมในส่วนถัดไป
นอกจากนี้อาร์เรย์ พีเอวี (เวกเตอร์ของเวกเตอร์) ติดตามค่าที่กำหนดก่อนหน้านี้ให้กับเซลล์นี้ สิ่งนี้ทำให้แน่ใจได้ว่าเราจะไม่กลับมาทบทวนวิธีแก้ปัญหาที่ล้มเหลวอีกครั้ง ซึ่งคล้ายกับสิ่งที่ทำใน TABU
มีกระบวนการบันทึกเพิ่มเติมที่กระบวนการค้นหาเขียนแต่ละขั้นตอน
เริ่มต้นการค้นหา
เมื่อทำบัญชีและตรวจสุขภาพเรียบร้อย เราก็สามารถเริ่มกระบวนการค้นหาได้แล้ว ขั้นตอนคือ:
- มีเซลล์ที่ต้องการค่าเหลืออยู่หรือไม่? – ถ้าไม่ แสดงว่าเราทำเสร็จแล้ว
- สำหรับแต่ละเซลล์ที่ต้องการค่า ให้ค้นหาตัวเลือกที่ผู้สมัครทั้งหมดสำหรับแต่ละเซลล์ ตารางที่ 4 มีค่าเหล่านี้เมื่อเริ่มต้นกระบวนการแก้ปัญหา ในการวนซ้ำแต่ละครั้ง ข้อมูลนี้จะได้รับการอัปเดตเพื่อรองรับค่าที่กำหนดให้กับเซลล์
- ประเมินตัวเลือกตามลำดับนี้
- หากเซลล์มีตัวเลือกเป็นศูนย์ ให้ทำการย้อนรอย
- ค้นหาเซลล์ทั้งหมดด้วยตัวเลือกเดียว เลือกเซลล์ใดเซลล์หนึ่ง มอบหมายงานนี้
- และอัปเดตตารางการติดตาม โซลูชันปัจจุบัน และ PAV
- หากเซลล์ทั้งหมดมีตัวเลือกมากกว่าหนึ่งตัวเลือก ให้เลือกหนึ่งเซลล์และหนึ่งค่า แล้วอัปเดต
- และอัปเดตตารางการติดตาม โซลูชันปัจจุบัน และ PAV
เราจะใช้ตารางที่ 6 ซึ่งเป็นส่วนหนึ่งของประวัติของกระบวนการแก้ไขปัญหา (เรียกว่า TRACKHIST) เพื่ออธิบายแต่ละขั้นตอน
ในการวนซ้ำครั้งแรก (CTR=1) เซลล์ 70 (แถว 8, คอลัมน์ 7, กล่อง 9) จะถูกเลือกเพื่อกำหนดค่า มีเพียงตัวเลือก (7) และค่านี้ถูกกำหนดให้กับเซลล์ 70 นอกจากนี้ ค่า 7 จะถูกเพิ่มให้กับเวกเตอร์ของค่าที่กำหนดก่อนหน้านี้ (PAV) สำหรับเซลล์ 70
ในการวนซ้ำครั้งที่สอง เซลล์ 30 ได้รับการกำหนดให้เป็นค่า 1 เซลล์นี้มีค่าที่เป็นตัวเลือกสองค่า ค่าตัวเลือกที่น้อยที่สุดจะถูกกำหนดให้กับเซลล์ (เป็นเพียงกฎที่กำหนดเองเพื่อให้ง่ายต่อการปฏิบัติตามตรรกะ)
กระบวนการระบุเซลล์ที่ต้องการค่าและการกำหนดค่าจะทำงานได้ดีจนกระทั่งการวนซ้ำ (CTR) 20 เซลล์ 9 ต้องการค่า แต่จำนวนผู้สมัครเป็นศูนย์ มีสองตัวเลือก:
- ไม่มีทางแก้ปริศนานี้ได้
- เรายกเลิก (ย้อนรอย) งานบางส่วนและใช้เส้นทางอื่น
เราค้นหาการกำหนดเซลล์ที่ใกล้เคียงที่สุด ซึ่งมีมากกว่าหนึ่งตัวเลือก ในตัวอย่างนี้ เหตุการณ์นี้เกิดขึ้นเมื่อวนซ้ำ 18 โดยที่เซลล์ 5 ถูกกำหนดให้เป็นค่า 3 แต่มีค่าที่เป็นตัวเลือกสองค่าสำหรับเซลล์ 5 – ค่า 3 และ 8
ระหว่างเซลล์ 5 (CTR = 18) และเซลล์ 9 (CTR = 20) เซลล์ 8 จะได้รับการกำหนดค่า 4 (CTR=19) เราใส่เซลล์ 8 และ 5 กลับเข้าไปในรายการ "ต้องการค่า" ข้อมูลนี้บันทึกไว้ในรายการ CTR=20 ที่สองและสาม โดยตั้งค่าเป็น 0 ค่า 3 จะถูกเก็บไว้ในเวกเตอร์ PAV สำหรับเซลล์ 5 นั่นคือเครื่องมือค้นหาไม่สามารถกำหนดค่า 3 ให้กับเซลล์ 5 ได้
เครื่องมือค้นหาจะเริ่มทำงานอีกครั้งเพื่อระบุค่าสำหรับเซลล์ 5 (โดยที่ 3 ไม่มีตัวเลือกอีกต่อไป) และกำหนดค่า 8 ให้กับเซลล์ 5 (CTR=21) จะดำเนินต่อไปจนกว่าเซลล์ทั้งหมดจะมีค่าหรือมีเซลล์ที่ไม่มีตัวเลือกและไม่มีเส้นทางย้อนกลับ โซลูชันถูกโพสต์ไว้ในตารางที่ 7
สังเกตว่า เมื่อมีผู้สมัครมากกว่าหนึ่งรายสำหรับเซลล์ นี่เป็นโอกาสสำหรับการประมวลผลแบบขนาน
เปรียบเทียบกับโซลูชันการเพิ่มประสิทธิภาพ MILP
ในระดับพื้นผิว การเป็นตัวแทนของปริศนา Sudoku นั้นแตกต่างอย่างมาก วิธีการของ AI ใช้จำนวนเต็มและไม่ว่าจะด้วยวิธีใดก็ตาม จะทำให้การนำเสนอมีความเข้มงวดและใช้งานง่ายยิ่งขึ้น นอกจากนี้ ตัวตรวจสอบสติยังให้ข้อมูลที่เป็นประโยชน์เพื่อสร้างสูตรที่แข็งแกร่งยิ่งขึ้น การนำเสนอ MILP นั้นไม่มีที่สิ้นสุด ไบนารี (0/1) อย่างไรก็ตาม ไบนารีเป็นตัวแทนที่ทรงพลังเมื่อพิจารณาถึงจุดแข็งของตัวแก้ปัญหา MILP สมัยใหม่
อย่างไรก็ตาม ภายในตัวแก้ปัญหา MILP จะไม่เก็บไบนารี แต่ใช้วิธีการอาร์เรย์แบบกระจายเพื่อกำจัดการเก็บค่าศูนย์ทั้งหมด นอกจากนี้ อัลกอริธึมในการแก้ไบนารี่ยังไม่เกิดขึ้นจนกระทั่งช่วงปี 1980 และ 1990 บทความปี 1983 โดย คราวเดอร์, จอห์นสัน และแพดเบิร์ก รายงานเกี่ยวกับหนึ่งในโซลูชันเชิงปฏิบัติแรกๆ ของการเพิ่มประสิทธิภาพด้วยไบนารี พวกเขาสังเกตเห็นความสำคัญของการประมวลผลล่วงหน้าที่ชาญฉลาดและวิธีการแยกสาขาและผูกมัดว่ามีความสำคัญอย่างยิ่งต่อโซลูชันที่ประสบความสำเร็จ
การระเบิดล่าสุดของการใช้โปรแกรมและซอฟต์แวร์ที่มีข้อจำกัดเช่น ตัวแก้ปัญหาท้องถิ่น ได้แสดงให้เห็นอย่างชัดเจนถึงความสำคัญของการใช้วิธี AI ด้วยวิธีการปรับให้เหมาะสมแบบดั้งเดิม เช่น การเขียนโปรแกรมเชิงเส้นและกำลังสองน้อยที่สุด
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://blog.arkieva.com/an-artificial-intelligence-based-solution-to-sudoku/?utm_source=rss&utm_medium=rss&utm_campaign=an-artificial-intelligence-based-solution-to-sudoku
- :มี
- :เป็น
- :ไม่
- :ที่ไหน
- $ ขึ้น
- 1
- 20
- 29
- 30
- 31
- 600
- 7
- 70
- 8
- 9
- a
- ความสามารถ
- อำนวยความสะดวก
- ที่เพิ่ม
- นอกจากนี้
- เพิ่มเติม
- นอกจากนี้
- สูง
- อีกครั้ง
- AI
- ขั้นตอนวิธี
- อัลกอริทึม
- ทั้งหมด
- อนุญาตให้
- แล้ว
- ด้วย
- เสมอ
- อเมซอน
- an
- และ
- อื่น
- ใด
- ปรากฏ
- เข้าใกล้
- โดยพลการ
- เป็น
- AREA
- แถว
- เทียม
- ปัญญาประดิษฐ์
- ปัญญาประดิษฐ์ (AI)
- AS
- ที่ได้รับมอบหมาย
- สมมติ
- At
- ความสนใจ
- ใช้ได้
- กลับ
- BE
- รับ
- ก่อน
- ซึ่งเป็นของ
- เป็น
- ระหว่าง
- ว่างเปล่า
- บล็อก
- คณะกรรมการ
- ทั้งสอง
- ขอบเขต
- กล่อง
- ในกล่องสี่เหลี่ยม
- สาขา
- แต่
- by
- ที่เรียกว่า
- CAN
- ผู้สมัคร
- ผู้สมัคร
- ไม่ได้
- ถูกจับกุม
- เพดาน
- Celebration
- เซลล์
- เซลล์
- ความท้าทาย
- โอกาส
- ตรวจสอบ
- การตรวจสอบ
- อ้างว่า
- ชัดเจน
- สี
- คอลัมน์
- คอลัมน์
- อย่างธรรมดา
- เสร็จ
- ซับซ้อน
- เงื่อนไข
- ขัดกัน
- ความขัดแย้ง
- มี
- เนื้อหา
- อย่างต่อเนื่อง
- แกน
- หลักสำคัญ
- ที่สร้างขึ้น
- วิกฤติ
- ปัจจุบัน
- ข้อมูล
- วัน
- ตาย
- ตัดสินใจ
- ลักษณะ
- รายละเอียด
- รายละเอียด
- รายละเอียด
- แน่นอน
- ต่าง
- ตัวเลข
- do
- ทำ
- เด่น
- ทำ
- Dont
- เป็นคุ้งเป็นแคว
- ที่ซ้ำกัน
- แต่ละ
- ง่าย
- ทั้ง
- องค์ประกอบ
- กำจัด
- ออกมา
- ช่วยให้
- ครอบคลุม
- ปลาย
- ไม่มีที่สิ้นสุด
- เครื่องยนต์
- เครื่องยนต์
- เพื่อให้แน่ใจ
- ทั้งหมด
- ฯลฯ
- ตัวอย่าง
- อธิบาย
- การระเบิด
- ล้มเหลว
- ไกล
- เป็นไปได้
- ใส่
- หา
- พบ
- ปลาย
- ชื่อจริง
- แก้ไข
- มุ่งเน้น
- ปฏิบัติตาม
- ดังต่อไปนี้
- สำหรับ
- สูตร
- การกำหนด
- พบ
- ราคาเริ่มต้นที่
- สนุก
- ฟังก์ชัน
- ฟังก์ชั่น
- ได้รับ
- กำหนด
- ตะแกรง
- มี
- จัดการ
- มี
- หัวใจสำคัญ
- เป็นประโยชน์
- ประวัติ
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- อย่างไรก็ตาม
- HTML
- HTTPS
- ID
- ระบุ
- แยกแยะ
- ระบุ
- if
- แสดง
- การดำเนินการ
- ความสำคัญ
- in
- รวมทั้ง
- ดัชนี
- แสดงว่า
- การแสดง
- เป็นรายบุคคล
- ข้อมูล
- แจ้ง
- ภายใน
- แทน
- สถาบัน
- Intelligence
- ภายใน
- ใช้งานง่าย
- IT
- การย้ำ
- ITS
- จอห์นสัน
- jpg
- เพียงแค่
- เก็บ
- เก็บไว้
- ทราบ
- ภาษา
- ชื่อสกุล
- ต่อมา
- ละติน
- การเรียนรู้
- น้อยที่สุด
- ซ้าย
- ชั้น
- เชิงเส้น
- รายการ
- เข้าสู่ระบบ
- ตรรกะ
- อีกต่อไป
- ดู
- มอง
- ที่ต้องการหา
- เครื่อง
- เรียนรู้เครื่อง
- ทำ
- ทำ
- ความกว้างสูงสุด
- อาจ..
- วิธี
- วัด
- วิธี
- วิธีการ
- ทันสมัย
- ข้อมูลเพิ่มเติม
- แห่งชาติ
- จำเป็นต้อง
- ความต้องการ
- เพื่อนบ้าน
- เก้า
- ไม่
- หมายเหตุ
- ตอนนี้
- จำนวน
- วัตถุประสงค์
- สังเกต
- ที่เกิดขึ้น
- of
- on
- ครั้งเดียว
- ONE
- เพียง
- การเพิ่มประสิทธิภาพ
- ตัวเลือกเสริม (Option)
- Options
- or
- ใบสั่ง
- เป็นต้นฉบับ
- ของเรา
- ออก
- กระดาษ
- Parallel
- ส่วนหนึ่ง
- เส้นทาง
- สมบูรณ์
- การปฏิบัติ
- ชิ้น
- สถานที่
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- เล่น
- จุด
- ยอดนิยม
- เป็นไปได้
- โพสต์
- ที่มีประสิทธิภาพ
- ประยุกต์
- ก่อนหน้านี้
- ปัญหา
- กระบวนการ
- การประมวลผล
- การเขียนโปรแกรม
- ให้
- ให้
- ใส่
- ปริศนา
- จิ๊กซอร์
- ความโกรธ
- พิสัย
- เมื่อเร็ว ๆ นี้
- ที่เกิดขึ้น
- สีแดง
- ลด
- ภูมิภาค
- ถดถอย
- การเรียนรู้การเสริมแรง
- ซ้ำแล้วซ้ำอีก
- รายงาน
- การแสดง
- แถว
- กฎ
- เดียวกัน
- การกำหนด
- ค้นหา
- เครื่องมือค้นหา
- ที่สอง
- Section
- ยึด
- เห็น
- เลือก
- เลือก
- ชุด
- รูปร่าง
- แสดง
- แสดงให้เห็นว่า
- คล้ายคลึงกัน
- เดียว
- So
- ซอฟต์แวร์
- ทางออก
- โซลูชัน
- แก้
- บาง
- แหล่ง
- ช่องว่าง
- สี่เหลี่ยม
- สี่เหลี่ยม
- เริ่มต้น
- ที่เริ่มต้น
- เริ่มต้น
- ขั้นตอน
- ขั้นตอน
- ยังคง
- จัดเก็บ
- เก็บไว้
- ความแข็งแรง
- แข็งแกร่ง
- โครงสร้าง
- โครงสร้าง
- ที่ประสบความสำเร็จ
- อย่างเช่น
- เหนือกว่า
- สนับสนุน
- พื้นผิว
- ตาราง
- ต่อสู้
- เอา
- กว่า
- ที่
- พื้นที่
- ที่มา
- ชุดรูปแบบ
- แล้วก็
- ที่นั่น
- ล้อยางขัดเหล่านี้ติดตั้งบนแกน XNUMX (มม.) ผลิตภัณฑ์นี้ถูกผลิตในหลายรูปทรง และหลากหลายเบอร์ความแน่นหนาของปริมาณอนุภาคขัดของมัน จะทำให้ท่านได้รับประสิทธิภาพสูงในการขัดและการใช้งานที่ยาวนาน
- พวกเขา
- ที่สาม
- นี้
- ที่เข้มงวดมากขึ้น
- ครั้ง
- ไปยัง
- รวม
- ลู่
- การติดตาม
- ลอง
- กลับ
- ผลัดกัน
- สองครั้ง
- สอง
- ชนิด
- เป็นปกติ
- เป็นเอกลักษณ์
- ไม่ทราบ
- จนกระทั่ง
- บันทึก
- ให้กับคุณ
- us
- ใช้
- มือสอง
- ใช้
- การใช้
- ความคุ้มค่า
- ความคุ้มค่า
- ตัวแปร
- มาก
- คือ
- we
- คือ
- อะไร
- ความหมายของ
- เมื่อ
- ที่
- ขาว
- กว้าง
- ช่วงกว้าง
- วิกิพีเดีย
- จะ
- กับ
- ไม่มี
- โรงงาน
- จะ
- ปี
- สีเหลือง
- ลมทะเล
- เป็นศูนย์