ผลต่างระหว่างรุ่นของ "418531 ภาคต้น 2552/โจทยปัญหาการค้นหาด้วยพละกำลังเยี่ยงควายถึก/เฉลยข้อ 3"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 1: แถว 1:
 +
== ข้อย่อย 1 ==
 
อินพุต: เซตของจำนวนเต็ม <math>A \,</math> ที่มีสมาชิกอยู่ <math>n \,</math> ตัว
 
อินพุต: เซตของจำนวนเต็ม <math>A \,</math> ที่มีสมาชิกอยู่ <math>n \,</math> ตัว
  
แถว 5: แถว 6:
 
แนวคิด วัตถุที่เราต้องพิจารณาคือ จำนวนเต็ม 3 ตัวจาก จำนวนเต็มทั้งหมด <math>n \,</math> ตัว ซึ่งในห้องเรียน เราได้เรียนวิธีในการหยิบของ <math>k \,</math> สิ่ง จากของทั้งหมด <math>n \,</math> สิ่งมาแล้ว ในเรื่องของ combination นั่นเอง เราจะใช้วิธีนั้นกัน ส่วนเงื่อนไขในข้อนี้คือ จำนวนเต็ม <math>a,b,c \,</math>สามตัวที่เลือกมานั้น ต้องมีคุณสมบัติว่า <math>a < b< c \,</math> ซึ่งถ้าเลือกตามวิธีในห้องเรียน ก็จะมีคุณสมบัติดังกล่าวอยู่แล้ว ดังนั้นเงื่อนไขที่ต้องตรวจสอบจริง  ๆ คือ <math>a+b > c \,</math> หรือไม่
 
แนวคิด วัตถุที่เราต้องพิจารณาคือ จำนวนเต็ม 3 ตัวจาก จำนวนเต็มทั้งหมด <math>n \,</math> ตัว ซึ่งในห้องเรียน เราได้เรียนวิธีในการหยิบของ <math>k \,</math> สิ่ง จากของทั้งหมด <math>n \,</math> สิ่งมาแล้ว ในเรื่องของ combination นั่นเอง เราจะใช้วิธีนั้นกัน ส่วนเงื่อนไขในข้อนี้คือ จำนวนเต็ม <math>a,b,c \,</math>สามตัวที่เลือกมานั้น ต้องมีคุณสมบัติว่า <math>a < b< c \,</math> ซึ่งถ้าเลือกตามวิธีในห้องเรียน ก็จะมีคุณสมบัติดังกล่าวอยู่แล้ว ดังนั้นเงื่อนไขที่ต้องตรวจสอบจริง  ๆ คือ <math>a+b > c \,</math> หรือไม่
  
จากแนวคิดดังกล่าวสามารถนำมาเขียนเป็น pseudocode ได้ดังนี้
+
จากแนวคิดดังกล่าวสามารถนำมาเขียนเป็น pseudocode ได้ดังนี้ (ให้ค่า l=3)
  
 
GENERATE(m,l)
 
GENERATE(m,l)
 
:if l=0
 
:if l=0
::
+
:: if c[0] + c[1] > c[2] // c[0],c[1],c[2] คือ a,b,c ตามลำดับ
 +
::: then return 1
 +
:: else
 +
::: return 0
 
:else
 
:else
:: for c[l-1] =3 to m
+
:: for c[l-1] = l to m
 
::: GENERATE(c[l-1]-1,l-1)
 
::: GENERATE(c[l-1]-1,l-1)
 +
 +
เวลาการทำงานของอัลกอริทึมข้างต้น คือเวลาที่ใช้ในการคำนวณหา combination ที่มีสมาชิก 3 ตัว คือ <math>{n \choose 3}= \Theta(n^3) \,</math> นั่นเอง
 +
 +
== ข้อย่อย 2 ==

รุ่นแก้ไขเมื่อ 06:58, 2 กันยายน 2552

ข้อย่อย 1

อินพุต: เซตของจำนวนเต็ม ที่มีสมาชิกอยู่ ตัว

เอาพุต: มีจำนวนเต็ม โดยที่ และ หรือไม่

แนวคิด วัตถุที่เราต้องพิจารณาคือ จำนวนเต็ม 3 ตัวจาก จำนวนเต็มทั้งหมด ตัว ซึ่งในห้องเรียน เราได้เรียนวิธีในการหยิบของ สิ่ง จากของทั้งหมด สิ่งมาแล้ว ในเรื่องของ combination นั่นเอง เราจะใช้วิธีนั้นกัน ส่วนเงื่อนไขในข้อนี้คือ จำนวนเต็ม สามตัวที่เลือกมานั้น ต้องมีคุณสมบัติว่า ซึ่งถ้าเลือกตามวิธีในห้องเรียน ก็จะมีคุณสมบัติดังกล่าวอยู่แล้ว ดังนั้นเงื่อนไขที่ต้องตรวจสอบจริง ๆ คือ หรือไม่

จากแนวคิดดังกล่าวสามารถนำมาเขียนเป็น pseudocode ได้ดังนี้ (ให้ค่า l=3)

GENERATE(m,l)

if l=0
if c[0] + c[1] > c[2] // c[0],c[1],c[2] คือ a,b,c ตามลำดับ
then return 1
else
return 0
else
for c[l-1] = l to m
GENERATE(c[l-1]-1,l-1)

เวลาการทำงานของอัลกอริทึมข้างต้น คือเวลาที่ใช้ในการคำนวณหา combination ที่มีสมาชิก 3 ตัว คือ นั่นเอง

ข้อย่อย 2