บ้านบ้าน

o62_may09_househouse

สิ่งที่สำคัญอย่างมากในข้อนี้คือ เกรดเดอร์จะปรับเปลี่ยนคำตอบไปตามการซื้อของเรา (adaptive) โดยมีเป้าหมายให้โปรแกรมของเราใช้ RR มากที่สุด โดยที่ RR คืออัตราส่วนของเงินที่เราจ่ายไป (ขอเรียกว่า TT) ต่อเงินที่เราจะจ่ายน้อยที่สุดเมื่อเราทราบ NN ล่วงหน้า (ขอเรียกว่า TT^*) นั่นคือ

R=T/TR = {T}/{T^*}

เป้าหมายของเราคือการหา strategy การจ่ายเงินที่ทำให้ค่า RR น้อยที่สุด

ก่อนอื่นเรามาวิเคราะห์ TT^* กันก่อน เมื่อเรารู้จำนวนวันที่เราจะอยู่บ้านนี้ (NN) แล้ว เราจะสามารถแยกออกได้เป็น 2 กรณี

  1. หาก N<CN < C เราควรจะเช่าบ้านวันต่อวัน ดังนั้น T=NT^* = N

  2. หาก NCN \geq C เราควรจะซื้อบ้านตั้งแต่วันแรกเลย ดังนั้น T=CT^* = C

พูดในอีกนัยหนึ่งคือ T=min(C,N)T^* = min(C, N) ดังนั้น TT^* เป็นฟังก์ชั่นไม่ลดเมื่อเทียบกับ NN

สมมติว่าเราเป็นเกรดเดอร์แล้วพยายามจะทำให้ RR มากที่สุดที่จะเป็นไปได้

สมมติว่าเราเรียกสายลับกลับมาหลังจากอยู่ได้อย่างน้อย xx วัน (ไม่ว่าซื้อหรือไม่ซื้อ) เราสามารถเลือก NN เป็นอะไรก็ได้โดยที่ xNMx \leq N \leq M แต่เนื่องจาก TT^* เป็นฟังก์ชั่นไม่ลดเมื่อเทียบกับ NN แล้ว และเราต้องการจะทำให้ค่า R=T/TR = T/T^* มากที่สุด ดังนั้นเราควรจะเลือก N=xN = x

ในอีกสถานการณ์ ให้เราสมมติว่าสายลับได้เช่าบ้านมาแล้ว kk วัน โดยที่ยังไม่ซื้อ เราควรจะปล่อยให้สายลับอยู่ต่อหรือไม่ หรือควรเรียกกลับมาเลย?

ในการหาคำตอบให้เราแยกออกเป็นสองกรณี

  1. kCk \geq C ถ้าเราเรียกกลับเลยอัตราส่วนจะเท่ากับ k/Ck/C แต่ถ้าหากเราให้อยู่ต่อ TT​ จะเพิ่มขึ้นและ TT^* จะเท่ากับ CC เหมือนเดิม ดังนั้นเราควรให้อยู่ต่อ ในกรณีนี้ R=T/T=T/C>k/CC/C=1R = T/T^* = T/C > k/C \geq C/C = 1 ดังนั้น R>1R> 1 ถ้าเราให้อยู่ต่อ

  2. k<Ck < C ในกรณีนี้ถ้าเราจะให้อยู่ต่อเราจะให้อยู่ต่อจนถึงแค่ k=Ck = C เพราะที่เราได้สรุปไปแล้วในกรณีที่ 1 สังเกตว่าในกรณีนี้ถ้าเราเรียกกลับ R=k/k=1R = k/k = 1 และถ้าเราให้อยู่ต่อ R=(k+1)/(k+1)=1R = (k+1)/(k+1) = 1 เช่นกัน แต่ถ้าหากเราให้อยู่ต่ออาจจะมีโอกาสที่เราจะได้ R>1R> 1 จากกรณีที่ 1

ดังนั้นเราควรให้สายลับของเราอยู่ต่อ

จากข้อสังเกตข้างต้นเราสามารถสรุปได้ว่าเกรดเดอร์จะให้สายลับเราอยู่ต่อไปเรื่อย ๆ ตราบใดที่เรายังไม่ได้ซื้อบ้าน

คราวนี้ให้เราสมมติว่าเราเป็นสายลับแล้วพยายามจะทำให้ RR น้อยที่สุดที่เป็นไปได้

สังเกตว่ารูปแบบการจ่ายเงินของเราจะเป็นไปไปได้ 2 แบบหลัก ๆ นั่นคือ

  1. จ่ายเงินค่าเช่าบ้านเป็นเวลา kk วัน (0k<M0 \leq k < M) จากนั้นจ่ายเงินซื้อบ้านในวันถัดมา วิธีนี้ใช้เงินทั้งหมด k+Ck + C บาท และได้อยู่บ้าน k+1k+1 วัน

    1.1 หาก k+1<Ck+1 < C อัตราส่วน RR ที่เราจะได้คือ k+Ck+1=1+C1k+1\frac{k+C}{k+1} = 1 + \frac{C-1}{k+1} ดังนั้นเราควรจะเลือก k+1=C1k+1 = C-1 ที่ทำให้ R=2R = 2

    1.2 หาก k+1Ck+1 \geq C อัตราส่วน RR จะเท่ากับ k+CC=1+kC\frac{k+C}{C} = 1 + \frac{k}{C} ดังนั้นเราควรจะเลือก k=C1k = C-1 ที่ทำให้ R=1+C1CR = 1 + \frac{C-1}{C}

  2. จ่ายเงินค่าเช่าบ้านทั้งหมด โดยเราจะต้องจ่ายจนจบการอยู่ของเราเลย ก็คือเราต้องจ่ายทั้งสิ้น MM บาท อัตราส่วนที่เราจะได้คือ R=M/min(M,C)R = M/min(M, C) โดยถ้า MCM \leq C อัตราส่วน RR จะเท่ากับ 11 และถ้า M>CM > C อัตราส่วน RR จะเท่ากับ M/CM/C

ดังนั้นเราสามารถสรุปวิธีการซื้อบ้านที่ดีที่สุดได้ดังนี้

  1. ถ้า MCM \leq C ให้เราเช่าบ้านจนจบ ไม่ต้องซื้อ จะได้ R=1R = 1

  2. ถ้า C<M2C1C < M \leq 2C-1 ให้เราเช่าบ้านจนจบ ไม่ต้องซื้อ จะได้ R=M/CR = M/C

  3. ถ้า M>2C1M > 2C-1 ให้เราเช่าบ้าน C1C-1 วัน และซื้อบ้านในวันที่ CC จะได้ R=1+C1CR = 1+ \frac{C-1}{C}