ท้าทาย
ค้นหาปกที่เล็กที่สุดของฐาน (เช่นโมดูลัส) ที่มีชุดของกำลังสองตกค้างสามารถทดสอบผ่านการค้นหาแบบตารางเพื่อกำหนดอย่างชัดเจนว่าจำนวนที่ไม่เป็นลบn ที่กำหนดเป็นตารางที่สมบูรณ์แบบหรือไม่ ฐานทั้งหมดจะต้องน้อยกว่าหรือเท่ากับรากที่สองของค่าสูงสุดของn
คำตอบที่มีชุดฐานที่เล็กที่สุดสำหรับหมวดหมู่ที่ระบุของnชนะการท้าทาย (ซึ่งหมายความว่าอาจมีผู้ชนะมากกว่าหนึ่งราย) หมวดหมู่ของnคือ:
Category Maximum allowed n Maximum allowed modulus/base
------------- -------------------- ----------------------------
8-bit values 255 15
16-bit values 65535 255
32-bit values 4294967295 65535
64-bit values 18446744073709551615 4294967295
ในกรณีที่เสมอกันสองชุดที่มีความสำคัญเท่ากับการผูกจะไปที่เซตที่มีความสามารถในการตรวจจับสแควร์ที่ไม่ใช่สแควร์ก่อนหน้านี้ในลำดับ
ในกรณีที่ไม่พบการครอบคลุมที่สมบูรณ์ (ซึ่งเป็นไปได้ทั้งหมดสำหรับหมวดหมู่ 32- บิตและ 64- บิต) ผู้ชนะจะเป็นชุดของฐานที่สถิติหรือพิสูจน์ออกมาเป็นเปอร์เซ็นต์สูงสุดของสแควร์สที่ไม่ถูกต้อง รายงานสแควร์สว่าไม่ใช่สแควร์ส) ดูด้านล่างสำหรับการสนทนาเกี่ยวกับความคุ้มครองที่ไม่สมบูรณ์
พื้นหลัง
ในการประยุกต์ใช้ทฤษฎีจำนวนมากคำถามเกิดขึ้นหรือไม่ว่าจำนวนnเป็นสี่เหลี่ยมจัตุรัสที่สมบูรณ์แบบ (0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ฯลฯ ) วิธีหนึ่งที่จะทดสอบว่าnเป็นตารางคือการทดสอบไม่ว่าจะเป็นชั้น (√n) ² = n, ที่อยู่, ไม่ว่าจะโค้งมนลงรากที่สองของnเมื่อยืดให้กลับn ตัวอย่างเช่น floor (√123) ² = 11² = 121 ซึ่งไม่ใช่ 123 ดังนั้น 123 จึงไม่เป็นรูปสี่เหลี่ยม แต่พื้น (√121) ² = 11² = 121 ดังนั้น 121 จึงเป็นรูปสี่เหลี่ยม วิธีนี้ใช้ได้ผลดีกับคนจำนวนน้อยโดยเฉพาะอย่างยิ่งเมื่อมีการดำเนินการแบบสแควร์รูทของฮาร์ดแวร์ แต่สำหรับจำนวนมาก (หลายร้อยหรือหลายพันบิต) มันอาจช้ามาก
อีกวิธีในการทดสอบกำลังสองคือการแยกส่วนที่ไม่ใช่สแควร์ออกโดยใช้ตารางกำลังสอง ตัวอย่างเช่นสี่เหลี่ยมทั้งหมดในฐาน 10 จะต้องมีหลักสุดท้าย (อันที่ - สถานที่) ที่เป็น 0, 1, 4, 5, 6, หรือ 9 ค่าเหล่านี้ในรูปแบบชุดของกำลังสองตกค้างสำหรับฐาน 10 ดังนั้นถ้าฐาน หมายเลข -10 ลงท้ายด้วย 0, 1, 4, 5, 6, หรือ 9 คุณรู้ว่ามันอาจจะเป็นรูปสี่เหลี่ยมจัตุรัสและจะต้องทำการตรวจสอบเพิ่มเติม แต่ถ้าตัวเลขฐาน -10 ลงท้ายด้วย 2, 3, 7 หรือ 8 คุณก็มั่นใจได้ว่ามันไม่ใช่รูปสี่เหลี่ยม
ลองดูที่ฐานอื่น สี่เหลี่ยมจัตุรัสทั้งหมดในฐาน 8 จะต้องลงท้ายด้วย 0, 1, หรือ 4 ซึ่งสะดวกเพียง 3 จาก 8 โอกาสซึ่งหมายถึงโอกาส 37.5% ของการสุ่มตัวเลขที่อาจเป็นสี่เหลี่ยม นี่เป็นอัตราต่อรองที่ดีกว่าฐาน 10 มาก (และโปรดทราบว่าการดำเนินการโมดูลัสของฐาน -8 นั้นเป็นเพียงการดำเนินการทางตรรกะและเชิงตรงข้ามกับโมดูลัสของฐาน -10 ซึ่งเป็นการหารด้วย 10 ด้วยส่วนที่เหลือ)
มีฐานที่ดีขึ้นหรือไม่ ใช่จริงแล้ว ฐาน 120 มีความเป็นไปได้ 18 แบบ (0, 1, 4, 9, 16, 24, 25, 36, 40, 49, 60, 64, 76, 81, 84, 96, 100, และ 105) ซึ่งคิดเป็นเพียง 15% โอกาสของการเป็นสี่เหลี่ยม และฐาน 240 นั้นยังดีกว่าโดยมีเพียง 24 ความเป็นไปได้เท่านั้นที่มีโอกาสเพียง 10% ที่อาจเป็นกำลังสอง
แต่ไม่มีฐานเดียวเพียงอย่างเดียวสามารถกำหนดกำลังสองแน่นอน (เว้นแต่จะมีขนาดใหญ่กว่าจำนวนสูงสุดที่ถูกทดสอบซึ่งเป็นไปไม่ได้อย่างชัดเจน) ฐานเดียวเพียงอย่างเดียวเท่านั้นที่จะออกกฎฉาก; มันไม่สามารถตรวจสอบฉากสุดท้ายได้ เฉพาะชุดฐานที่คัดสรรมาอย่างดีซึ่งทำงานร่วมกันเท่านั้นที่สามารถตรวจสอบฉากสุดท้ายของช่วงจำนวนเต็มได้
ดังนั้นคำถามจะกลายเป็น: ฐานชุดใดที่มีรูปแบบครอบคลุมน้อยที่สุดซึ่งร่วมกันอนุญาตให้มีการลดลงอย่างชัดเจนของฉากหรือฉากที่ไม่ใช่
ตัวอย่างของใบปะหน้าที่ถูกต้อง แต่ไม่น้อย
ฝาครอบ 16-base cover {3, 4, 5, 7, 8, 9, 11, 13, 16, 17, 19, 23, 25, 29, 31, 37} เพียงพอที่จะกำหนดฉากหรือไม่ใช่ฉากของค่า 16 บิตทั้งหมด 0 ถึง 65535 แต่มันไม่ได้เป็นปกที่น้อยที่สุดเพราะมีอย่างน้อย 15 ฐานที่มีอยู่ที่สามารถค้นพบได้ง่าย ในความเป็นจริงเป็นไปได้ว่ามีผ้าคลุมขนาดเล็กกว่าอยู่อาจจะมีเพียงแค่ 6 หรือ 7 ฐานเท่านั้น
แต่สำหรับภาพประกอบลองดูที่การทดสอบค่าตัวอย่างของnโดยใช้ชุดฝาครอบ 16 ฐานนี้ นี่คือเซตของการตกค้างกำลังสองสำหรับชุดฐานด้านบน:
Base m Quadratic residue table specific to base m
------ ----------------------------------------------------
3 {0,1}
4 {0,1}
5 {0,1,4}
7 {0,1,2,4}
8 {0,1,4}
9 {0,1,4,7}
11 {0,1,3,4,5,9}
13 {0,1,3,4,9,10,12}
16 {0,1,4,9}
17 {0,1,2,4,8,9,13,15,16}
19 {0,1,4,5,6,7,9,11,16,17}
23 {0,1,2,3,4,6,8,9,12,13,16,18}
25 {0,1,4,6,9,11,14,16,19,21,24}
29 {0,1,4,5,6,7,9,13,16,20,22,23,24,25,28}
31 {0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28}
37 {0,1,3,4,7,9,10,11,12,16,21,25,26,27,28,30,33,34,36}
ทีนี้ลองทดสอบจำนวนn = 50401 โดยใช้ชุดฐานนี้โดยแปลงมันเป็นแต่ละฐาน (นี่ไม่ใช่วิธีที่มีประสิทธิภาพมากที่สุดในการตรวจสอบสิ่งตกค้าง แต่ก็เพียงพอสำหรับวัตถุประสงค์ในการอธิบาย) เป็นสถานที่ของ 1 ที่เราสนใจที่นี่ (ทำเครื่องหมายไว้ด้านล่างในวงเล็บ):
Base "Digits" in base m
m m^9 m^8 m^7 m^6 m^5 m^4 m^3 m^2 m^1 ( m^0 )
---- -----------------------------------------------------------------
3 2 1 2 0 0 1 0 2 0 ( 1 ) ✓
4 3 0 1 0 3 2 0 ( 1 ) ✓
5 3 1 0 3 1 0 ( 1 ) ✓
7 2 6 6 6 4 ( 1 ) ✓
8 1 4 2 3 4 ( 1 ) ✓
9 7 6 1 2 ( 1 ) ✓
11 3 4 9 5 ( 10 )
13 1 9 12 3 ( 0 ) ✓
16 12 4 14 ( 1 ) ✓
17 10 4 6 ( 13 ) ✓
19 7 6 11 ( 13 )
23 4 3 6 ( 8 ) ✓
25 3 5 16 ( 1 ) ✓
29 2 1 26 ( 28 ) ✓
31 1 21 13 ( 26 )
37 36 30 ( 7 ) ✓
ดังนั้นเราจะเห็นได้ว่าใน 13 ฐานเหล่านี้ส่วนที่เหลือตรงกับสมการกำลังสองที่รู้จักกัน (เรียกสิ่งนี้ว่า "กด" ในตาราง) และใน 3 ฐานเหล่านี้ส่วนที่เหลือไม่ตรงกับส่วนที่เหลือกำลังสองที่รู้จักกัน "นางสาว"). ทั้งหมดนี้ใช้เวลาแค่ 1 พลาดที่จะรู้ว่ามีจำนวนที่ไม่ใช่สแควร์ดังนั้นเราสามารถหยุดที่ 11 แต่เพื่อวัตถุประสงค์ในการอธิบายเราได้ตรวจสอบทั้ง 16 ฐานที่นี่
ตัวอย่างของใบปะหน้าที่ไม่สมบูรณ์
ในทางเทคนิคฝาปิดที่ไม่สมบูรณ์ไม่ได้เป็นฝาครอบ แต่อยู่ข้างจุด ชุดฐาน {7, 8, 11, 15} เกือบจะครอบคลุมค่า 8 บิตทั้งหมดของnจาก 0 ถึง 255 อย่างถูกต้อง แต่ไม่มาก โดยเฉพาะอย่างยิ่งมันระบุอย่างไม่ถูกต้อง 60 และ 240 เป็นสี่เหลี่ยมจัตุรัส (นี่คือผลบวกปลอม) - แต่มันจะระบุสี่เหลี่ยมจริงทั้งหมดได้อย่างถูกต้อง (0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 81, 100, 121, 144, 169, 196 และ 225) และทำให้ไม่มีผลบวกปลอมอื่น ๆ ดังนั้นนี่คือชุดที่ 4 ซึ่งเกือบจะประสบความสำเร็จในการแก้ปัญหา แต่ล้มเหลวในที่สุดเพราะฝาปิดที่ไม่สมบูรณ์ไม่ใช่โซลูชันที่ถูกต้อง
สำหรับ 8 บิตnชุดฐาน {7, 8, 11, 15} เป็นหนึ่งในสองชุดฐาน 4 ที่สร้างข้อผิดพลาดสองและมีเจ็ดชุดฐาน 4 ที่สร้างข้อผิดพลาดเดียวเท่านั้น ไม่มีชุดฐาน 4 จริงซึ่งเป็นรูปแบบที่สมบูรณ์และถูกต้องของค่า 8 บิต คุณสามารถหาชุด 5 ฐานที่ไม่มีข้อผิดพลาดครอบคลุมค่า 8 บิตทั้งหมดอย่างถูกต้องหรือไม่ หรือคุณต้องการ 6 หรือมากกว่า? (ฉันรู้คำตอบสำหรับ 8 บิตnแต่ฉันจะไม่แจกมันฉันไม่ทราบคำตอบสำหรับ 16 บิต 32 บิตหรือ 64 บิตและฉันเชื่อว่าแม้แต่ 16 - กรณีบิตเป็นไปไม่ได้ที่จะแก้ไขผ่านการค้นหาแบบ brute-force การแก้กรณีแบบ 32 บิตและ 64 บิตจะต้องใช้วิธีพันธุกรรมการแก้ปัญหาหรือการค้นหาอื่น ๆ อย่างแน่นอน)
ความคิดเห็นเกี่ยวกับตัวเลขที่มีขนาดใหญ่เข้ารหัส
นอกเหนือจากตัวเลข 64 บิต - เป็นเลขฐานสองหลักร้อยหรือหลักพัน - นี่คือที่การตรวจสอบฉากอย่างรวดเร็วเข้ามามีประโยชน์มากที่สุดแม้ว่าฝาจะไม่สมบูรณ์ (ซึ่งแน่นอนที่สุดจะเป็นตัวเลขขนาดใหญ่) การทดสอบเช่นนี้จะมีประโยชน์อย่างไรถึงจะเป็นการชี้ขาดที่ไม่เพียงพอ? ลองจินตนาการว่าคุณมีการทดสอบที่รวดเร็วอย่างมากสำหรับฉากที่ทำงานอย่างถูกต้อง 99.9% ของเวลาและให้ค่าลบที่ผิดพลาด 0.1% ของเวลาและไม่เคยให้ผลบวกปลอม ด้วยการทดสอบเช่นนี้คุณจะสามารถกำหนดจำนวนที่ไม่ได้เป็นเลขสัมผัสได้เกือบจะทันทีและจากนั้นในกรณีที่มีความไม่เด็ดขาดคุณสามารถหันไปใช้วิธีที่ช้าลงเพื่อแก้ไขสิ่งที่ไม่รู้จักในแบบที่ต่างออกไป สิ่งนี้จะช่วยให้คุณประหยัดเวลาได้มาก
ตัวอย่างเช่นชุด {8, 11, 13, 15} ถูกต้อง 99.61% ของเวลาสำหรับค่า 8 บิตของnจาก 0 ถึง 255 ถูกต้อง 95.98% ของเวลาสำหรับค่า 16 บิตของnจาก 0 ถึง 65535 และถูกต้อง 95.62% ของเวลาสำหรับค่า 24 บิตของnจาก 0 ถึง 16777215 ขณะที่nไปไม่มีที่สิ้นสุดเปอร์เซ็นต์ของความถูกต้องสำหรับชุดฐานนี้จะลดลง ความถูกต้อง
ดังนั้นแม้แต่ชุดเล็ก ๆ 4 ฐานขนาดเล็กนี้ก็ยังมีประโยชน์ในการระบุจำนวนประมาณ 22 จาก 23 ในขณะที่ไม่ใช่สแควร์สได้โดยทันที วิธีการที่ช้ากว่านั้นจะต้องใช้ในกรณีที่ไม่สามารถตัดออกได้ด้วยการทดสอบด่วนนี้
เป็นที่น่าสนใจที่จะทราบว่าฐาน 16 บิตบางแห่งสามารถทำได้ดีกว่า 95% ทั้งหมดด้วยตนเอง ในความเป็นจริงแต่ละฐานด้านล่างสามารถกำจัดวัชพืชได้ดีกว่า 97% ของจำนวนทั้งหมดจนถึงจำนวนไม่ จำกัด ชุดกำลังสองตกค้างสำหรับแต่ละฐานเหล่านี้สามารถแสดงเป็นอาร์เรย์ที่บรรจุบิตโดยใช้เพียง 8192 ไบต์
นี่คือ 10 ฐานที่ทรงพลังที่สุดเดียวที่น้อยกว่า 2 ^ 16:
Rank Base Prime factorization Weeds out
---- ------------------------------ ---------
1. 65520 = 2^4 x 3^2 x 5 x 7 x 13 97.95%
2. 55440 = 2^4 x 3^2 x 5 x 7 x 11 97.92%
3. 50400 = 2^5 x 3^2 x 5^2 x 7 97.56%
4. 52416 = 2^6 x 3^2 x 7 x 13 97.44%
5. 61200 = 2^4 x 3^2 x 5^2 x 17 97.41%
6. 44352 = 2^6 x 3^2 x 7 x 11 97.40%
7. 63360 = 2^7 x 3^2 x 5 x 11 97.39%
8. 60480 = 2^6 x 3^3 x 5 x 7 97.38%
9. 63840 = 2^5 x 3 x 5 x 7 x 19 97.37%
10. 54720 = 2^6 x 3^2 x 5 x 19 97.37%
เห็นอะไรที่น่าสนใจที่ฐานเหล่านี้มีเหมือนกัน? ไม่มีเหตุผลที่จะคิดว่าพวกเขาอาจจะมีประโยชน์ในการรวมกัน (บางทีพวกเขาอาจจะไม่ใช่พวกเขา) แต่มีเงื่อนงำที่ดีบางอย่างที่นี่เกี่ยวกับสิ่งที่ฐานมีแนวโน้มที่จะมีอิทธิพลมากที่สุดสำหรับหมวดหมู่ของตัวเลขขนาดใหญ่
ความท้าทายด้านข้าง:หนึ่งในฐานที่มีอิทธิพลมากที่สุด (ถ้าไม่มากที่สุด) ถึง 2 ^ 28 คือ 245044800 ซึ่งเพียงอย่างเดียวสามารถกำจัดวัชพืชได้อย่างถูกต้องจาก 99.67% ของสี่เหลี่ยมไม่ใช่หรือประมาณ 306 307 ตัวเลขสุ่มโยนไปที่มัน คุณสามารถหาที่มีอิทธิพลมากที่สุดฐานเดียวน้อยกว่า 2 ^ 32?
ที่เกี่ยวข้อง
มีแนวคิดที่ดีมากในคำถามต่อไปนี้ที่เกี่ยวข้องอย่างใกล้ชิดรวมถึงเทคนิคการเพิ่มประสิทธิภาพขนาดเล็กหลายประการเพื่อให้การดำเนินการบางอย่างรวดเร็วขึ้น แม้ว่าคำถามที่เชื่อมโยงนั้นไม่ได้กำหนดไว้เป็นพิเศษเพื่อค้นหาชุดฐานที่แข็งแกร่งที่สุด แต่แนวคิดของฐานที่แข็งแกร่งนั้นเป็นศูนย์กลางของเทคนิคการปรับให้เหมาะสมบางอย่างที่ใช้