พิจารณาชุดของค่า (แสดงเป็นอาร์เรย์ที่เรียงลำดับโดยไม่ซ้ำกันและมีขนาดที่รู้จัก (เช่นขนาดสามารถรับได้ใน O (1)) ค่าสามารถทดสอบได้สำหรับความเท่าเทียมกันในเวลา O (1) ฉันต้องการ ที่จะได้รับชุดของค่าที่มีอยู่อย่างน้อยkชุดที่แตกต่างกันในหมู่n
อัลกอริทึมที่ชัดเจนที่จะทำเช่นนี้คือการไปผ่านชุดทั้งหมดนับจำนวนของการเกิดขึ้นของแต่ละค่าและย้อนกลับมาผู้ที่มีการนับสูงกว่าkแต่ในบางกรณีคุณสามารถทำได้ดีกว่า: ยกตัวอย่างเช่นเมื่อn = k = 2และเมื่อหนึ่งชุดS 1มีขนาดเล็กกว่าชุดอื่น ๆS 2ว่ามันมีประสิทธิภาพมากขึ้นในการดูรายการทั้งหมดของS 1และดำเนินการ การค้นหาแบบไบนารีสำหรับแต่ละรายการในS 2 : วิธีการค้นหาแบบไบนารีจะมีค่าใช้จ่ายO ( | S 1 |บันทึก( | S 2 |ในขณะที่วิธีการไร้เดียงสามีค่าใช้จ่าย O ( | S 1 | + | S 2 | )ซึ่งแย่กว่าเมื่อ | S 1 | < < | S 2 | .
เมื่อพิจารณาสิ่งนี้แล้วสถานการณ์ใดที่เราสามารถทำได้ดีกว่าอัลกอริธึมไร้เดียงสา? (หากเป็นปัญหาที่รู้จักกันดีฉันยินดีที่จะทราบชื่อปกติและมีการอ้างอิง)