ผลต่างระหว่างรุ่นของ "418531 ภาคต้น 2552/โจทยปัญหาการค้นหาด้วยพละกำลังเยี่ยงควายถึก/เฉลยข้อ 3"
ไปยังการนำทาง
ไปยังการค้นหา
Aoy (คุย | มีส่วนร่วม) |
Aoy (คุย | มีส่วนร่วม) |
||
แถว 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] = | + | :: 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
- if c[0] + c[1] > c[2] // c[0],c[1],c[2] คือ a,b,c ตามลำดับ
- else
- for c[l-1] = l to m
- GENERATE(c[l-1]-1,l-1)
- for c[l-1] = l to m
เวลาการทำงานของอัลกอริทึมข้างต้น คือเวลาที่ใช้ในการคำนวณหา combination ที่มีสมาชิก 3 ตัว คือ นั่นเอง