คุณและเพื่อนสูญเสียกันและกันในคอนเสิร์ตและไม่แน่ใจว่าใครในอนาคตข้างหน้า อย่างเป็นทางการแต่ละคนอยู่ในพิกัดจำนวนเต็มบางส่วนและอาจเดินไปทางพิกัดที่สูงขึ้นหรืออยู่ในสถานที่
สมมติว่าคุณและเพื่อนของคุณกำลังติดตามอัลกอริทึมที่แน่นอน (และไม่คุณอาจไม่พูดว่า "if (name ==" R B ") ทำอะไร :)) และระยะทางเริ่มต้นระหว่างคุณสองคนคือ (ซึ่งไม่ใช่ รู้จักคุณ)
อัลกอริธึมที่ลดระยะทางเดินที่คาดไว้ให้น้อยที่สุดจนกว่าคุณและเพื่อนของคุณจะพบกันคืออะไร
คุณอาจคิดว่าทั้งเพื่อนและตัวคุณเองกำลังเคลื่อนไหวด้วยความเร็วคงที่เท่ากัน
อัลกอริธึมตัวอย่างง่าย ๆ จะเป็นดังนี้:
ที่เวที (เริ่มต้นจาก0 ):
- เดินขั้นตอนในการงาน wp ขวา1หรือรอเวลา3nหน่วยเป็นอย่างอื่น
หากต้องการดูขั้นตอนวิธีการนี้จะทำให้เพื่อน ๆ พบกับความน่าจะเป็นที่ 1 พิจารณาสิ่งที่เกิดขึ้นในขั้นตอน ) แม้ว่าเพื่อนที่เป็นxก้าวไปข้างหน้าเสมอเดินและอื่น ๆ มักจะอยู่ในสถานที่ที่ระยะห่างระหว่างทั้งสองจะเป็น: x + 1 + 3 + 9 + ... + 3 บันทึก3 x = 2 x + x - 1
ดังนั้นเมื่อการซ้ำ3 x + 1เพื่อนที่เลือกเดินจะครอบคลุมระยะทาง3 ล็อก3 x + 1 = 3 xดังนั้นจึงมีความน่าจะเป็น1เพื่อนที่อยู่ข้างหลังจะตามทันและพวกเขาจะได้พบกัน
การเพิ่มประสิทธิภาพอย่างง่าย (เพื่อลดระยะการเดิน) จะเป็นแทนที่จะเดินก้าวเดินc xก้าวโดยให้c : 2 + 1
ดังนั้นดีที่สุดสำหรับอัลกอริทึมนี้คือc = 3 + √
น่าเสียดายที่อัลกอริทึมนี้รับประกันว่าเพื่อน ๆ จะได้พบกับความน่าจะเป็น 1 ระยะทางเดินที่คาดหวังนั้นไม่มีที่สิ้นสุดซึ่งเป็นสิ่งที่ฉันต้องการหลีกเลี่ยงถ้าเป็นไปได้
มีอัลกอริทึมที่มีประสิทธิภาพมากขึ้นหรือไม่