ฉันต้องการอัลกอริทึมเพื่อทำการค้นหาแบบไบนารีเมื่อการทดสอบในแต่ละขั้นตอนอาจให้ผลที่ผิด
พื้นหลัง:
ฉันต้องการให้นักเรียนอยู่ในระดับที่ยากที่สุด 12 ระดับ วิธีการในปัจจุบันเป็นสัตว์เดรัจฉานและถามคำถามแบบเลือกตอบ 60 ข้อที่มี 4 ข้อเพื่อเพิ่มความยากหยุดหลังจากผิดสามข้อและทำให้นักเรียนอยู่ในระดับ: floor((score - 1) / 5) + 1
อย่างน้อย 1
เรากังวลว่าลูกค้าจะปิดเมื่อพวกเขาเผชิญกับการทดสอบคำถามถึง 60 คำถามก่อนที่พวกเขาจะสามารถใช้โปรแกรมได้จริงดังนั้นเราจึงต้องการลดจำนวนคำถามที่ถามในการทดสอบ นอกจากนี้เรายังเป็นห่วงว่าลูกค้าจะข้ามการทดสอบวัดระดับ (เพราะมันใช้เวลานาน) แล้วละทิ้งโปรแกรมไปเพราะมันดูเหมือนง่ายเกินไป
ค่าเฉลี่ยของการจัดตำแหน่งนั้นอยู่ที่ระดับ 2 ดังนั้นคะแนนนักเรียน + 50 +% <11 (เช่นคำตอบ <14 คำถาม) โดยทั่วไปอาจเป็นเพราะพวกเขารู้สึกเบื่อและหยุดคำถามอย่างจริงจัง (เป็นเด็ก)
โซลูชันที่เสนอ: ใช้การทดสอบเป็นการค้นหาแบบไบนารี่มากกว่าสิบสองรายการเริ่มต้นด้วยคำถามที่ระดับความยากลำบาก 6/7 และดำเนินการตามว่าพวกเขาได้รับคำถามถูกหรือผิด ในทางทฤษฎีสิ่งนี้สามารถค้นหาระดับความยากที่เหมาะสมสำหรับคำถาม 3-4 ข้อ
ปัญหา: ในขณะที่คุณอาจเดาได้จากการทดสอบที่มีอยู่สิ้นสุดเพียงหลังจากสามคำตอบที่ผิดและใช้ 60 คำถามเพื่อเลือกระหว่าง 12 ระดับเราต้องการให้ค่าเผื่อสำหรับนักเรียน fluking คำตอบที่ถูกต้อง (ซึ่งพวกเขาควรทำ 25% ของเวลา) หรือโดยไม่ตั้งใจ ให้คำตอบที่ไม่ถูกต้อง (นิ้วอ้วนคำถามผิด ๆ ฯลฯ ) สิ่งนี้มีความสำคัญยิ่งกว่าด้วยการค้นหาแบบไบนารีเพราะการตอบคำถามที่ถูกต้องในคำถามแรกอาจทำให้คุณอยู่ในระดับครึ่งบนของระดับความยากแม้ว่าคุณจะได้รับคำถามที่ผิด
ดังนั้นจะมีอัลกอริทึมที่รู้จักสำหรับการค้นหาแบบไบนารีที่คุณไม่สามารถรับประกันได้ว่าการทดสอบแต่ละรายการมีความถูกต้องหรือไม่?
ฉันอาจลองอย่างไร้เดียงสา 3 หรือ 5 คำถามในแต่ละขั้นตอนและเนื่องจากคำถามก่อนหน้านี้มีผลต่อผลลัพธ์สุดท้ายมากกว่าคำถามในภายหลังอาจเพิ่มคำถามเพิ่มเติมเหล่านี้ในขั้นตอนแรกเท่านั้นไม่ใช่คำถามต่อไป มีอะไรมากกว่านั้นอีกไหม?