Mathcenter Forum  

Go Back   Mathcenter Forum > คณิตศาสตร์โอลิมปิก และอุดมศึกษา > คณิตศาสตร์อุดมศึกษา
สมัครสมาชิก คู่มือการใช้ รายชื่อสมาชิก ปฏิทิน ข้อความวันนี้

ตั้งหัวข้อใหม่ Reply
 
เครื่องมือของหัวข้อ ค้นหาในหัวข้อนี้
  #1  
Old 14 กรกฎาคม 2005, 22:39
Mangcom's Avatar
Mangcom Mangcom ไม่อยู่ในระบบ
สมาชิกใหม่
 
วันที่สมัครสมาชิก: 23 มิถุนายน 2005
ข้อความ: 4
Mangcom is on a distinguished road
Post กำลัง งง

โจทย์มีอยู่ว่า

มีกระต่ายตัวผู้และตัวเมียคู่หนึ่ง เพิ่งเกิด โดนเจ้านายใจร้าย เอามาทิ้งบนเกาะร้าง
โดยธรรมชาติของกระต่ายในที่นี้เมื่ออายุครบ 2 เดือนบริบูรณ์จะมีลูก 1 คู่
ซึ่งเป็น ตัวผู้กับตัวเมีย และจะเป็นสามีภรรยากันต่อไป สมมุติว่าไม่มีการตาย
ของกระต่ายเกิดขึ้น เมื่อเวลาผ่านไป n เดือนจะมีจำนวนกระต่ายกี่คู่บนเกาะร้างนี้

โจทย์มีอย่างนี้แหละครับ ยังไงฝากช่วยคิดให้ทีนะครับ

เหตุผลคือ ผมได้โจทย์มา แล้วอาจารย์ให้เขียนเป็นโปรแกรม คอมพิวเตอร์
แต่ ไม่เก่งคณิตศาสตร์ เลยอยากได้ที่มาที่ไปของสมการ ครับ
ตอบพร้อมอ้างอิงข้อความนี้
  #2  
Old 14 กรกฎาคม 2005, 23:37
passer-by passer-by ไม่อยู่ในระบบ
ผู้พิทักษ์กฎทั่วไป
 
วันที่สมัครสมาชิก: 11 เมษายน 2005
ข้อความ: 1,442
passer-by is on a distinguished road
Post

อ้างอิง:
โดยธรรมชาติของกระต่ายในที่นี้เมื่ออายุครบ 2 เดือนบริบูรณ์จะมีลูก 1 คู่
รู้สึกว่า ปัญหาของคุณ Mangcom จะเหมือน ปัญหายอดฮิตเกี่ยวกับ fibonacci เลยนะครับ ถ้าเป็นเช่นนั้นจริง ข้อความข้างบน น่าจะเขียนเพิ่มไปด้วยว่า หลังจากกระต่ายอายุครบ 2 เดือน แล้ว จะให้กำเนิด กระต่ายคู่ใหม่ 1 คู่ และจะทำเช่นนี้เรื่อยๆไป ในเดือนต่อๆไป

ถ้าให้ f(n) แทนจำนวนกระต่าย เมื่อสิ้นสุด เดือนที่ n

จะเห็นว่า f(0)= 1 , f(1)=1 เพราะกระต่ายยังอายุไม่ครบ 2 เดือน

แต่หลังจากนี้ จำนวนกระต่าย f(n) จะเท่ากับ จำนวนกระต่ายเดิมที่ยังอยู่ f(n-1) บวกกับ จำนวนกระต่ายคู่ใหม่ที่จะเกิด f(n-2) หรือเขียนเป็น recurrence relation ได้ว่า

f(n) = f(n-1)+f(n-2) (n2)

ถ้าไม่ เคลียร์ ดูได้จาก diagram ใน web นี้ครับ
CLICK

สรุปว่า recurrence relation สำหรับปัญหานี้ ก็คือ
f(0)= 1 , f(1)=1
f(n) = f(n-1)+f(n-2) (n2)

แล้วก็คงต้องเขียนโปรแกรม แบบ recursive แล้วล่ะครับ (อ้อ! ระวัง เรื่อง stack overflow ด้วยนะครับ)
__________________
เกษียณตัวเอง ปลายมิถุนายน 2557 แต่จะกลับมาเป็นครั้งคราว
ตอบพร้อมอ้างอิงข้อความนี้
  #3  
Old 18 กรกฎาคม 2005, 19:22
Pich Pich ไม่อยู่ในระบบ
จอมยุทธ์หน้าหยก
 
วันที่สมัครสมาชิก: 11 กรกฎาคม 2001
ข้อความ: 151
Pich is on a distinguished road
Post

ข้อนี้ไม่น่าใช้ recursive function นะครับ
มันเกิดกรณีที่คำตอบที่จะหาซ้อนกันค่อนข้างมาก

ถ้าใช้ recursive function จะใช้เวลาประมาณ O (2n) เชียวนะครับ
แต่ถ้าใช้ Dynamic programming จะใช้เวลาแค่ประมาณ O (n) เองครับ

ถ้าเราใช้ความรู้เรื่อง ความสัมพันธ์เวียนบังเกิด (อยู่ใน ภิณทณะคณิตศาสตร์(Discrete Math)) หารูปผลเฉลยออกมาได้ แล้วแทนค่าเข้าไปใน program ก็จะดีมากเลยครับ ใช้เวลาเป็น O(c)

18 กรกฎาคม 2005 19:24 : ข้อความนี้ถูกแก้ไขแล้ว 1 ครั้ง, ครั้งล่าสุดโดยคุณ Pich
ตอบพร้อมอ้างอิงข้อความนี้
  #4  
Old 19 กรกฎาคม 2005, 03:10
passer-by passer-by ไม่อยู่ในระบบ
ผู้พิทักษ์กฎทั่วไป
 
วันที่สมัครสมาชิก: 11 เมษายน 2005
ข้อความ: 1,442
passer-by is on a distinguished road
Post

น้อง Pich นี่ ท่าทาง จะเชี่ยวชาญเรื่อง algorithm analysis มากๆ นะครับ สงสัยอนาคตจะได้ programmer ฝีมือดีซะแล้ว

ตอนนี้ ก็แล้วแต่คุณ mangcom แล้วกันครับ ว่า ชอบแบบไหน
__________________
เกษียณตัวเอง ปลายมิถุนายน 2557 แต่จะกลับมาเป็นครั้งคราว
ตอบพร้อมอ้างอิงข้อความนี้
ตั้งหัวข้อใหม่ Reply



กฎการส่งข้อความ
คุณ ไม่สามารถ ตั้งหัวข้อใหม่ได้
คุณ ไม่สามารถ ตอบหัวข้อได้
คุณ ไม่สามารถ แนบไฟล์และเอกสารได้
คุณ ไม่สามารถ แก้ไขข้อความของคุณเองได้

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
ทางลัดสู่ห้อง


เวลาที่แสดงทั้งหมด เป็นเวลาที่ประเทศไทย (GMT +7) ขณะนี้เป็นเวลา 18:06


Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Modified by Jetsada Karnpracha