อย่างเช่นมีชุดตัวเลข 1 1 1 2 2 3 4 ต้องการจัดกลุ่มให้รวมกันได้ใกล้เคียง 5 ที่สุด (optimize) โดยในแต่ละกลุ่มไม่จำกัดว่ามีตัวเลขกี่ชุด
ผลของโปรแกรมที่ควรจะได้ 2 3 , 1 4 , 1 1 2
ไม่ทราบว่าแบบนี้เขาเรียก algorithm อะไรครับ ถ้าใครมี link ตัวอย่างโปรแกรมภาษาอะไรก็ได้ครับ จะลองไปศึกษาดูครับ
ขอบคุณครับ
ใกล้ 5 ที่สุดมีเงื้อนไขไหมครับว่า +/- ไม่เกินเท่าไหร? หรือต้องเท่ากับ 5
ไม่มีครับ ขอให้เท่ากับหรือใกล้เคียง 5 ที่สุด น้อยกว่าได้แต่ห้ามเกิน 5 ครับ
เป้าหมายคือให้ได้จำนวนกลุ่มน้อยที่สุดครับ
Genetic Algorithm เลยครับ.
ใช้ Bruce force น่าจะง่ายสุดแต่ถึกที่สุด
ถ้าเจอ input ระดับหลักพันตัวจะไม่พูดอย่างนี้....
http://en.wikipedia.org/wiki/Partition_problem
แบบนี้รึเปล่าครับ
หรือแบบนี้
http://en.wikipedia.org/wiki/Bin_packing_problem
ขอบคุณครับ อันนี้ตรงกับที่ลองเขียนเองครับ เลือกเอาอันที่พอดีไปก่อน (First-fit algorithm) ประสิทธิภาพเฉลี่ย 90 - 98% ครับ (ลองกับข้อมูลแบบสุ่ม 100 ชุด) ไม่ได้ดีที่สุด แต่ก็ใช้เวลาคำนวณน้อย และง่ายพอที่จะมีปัญญาเขียนเองได้ ส่วนอื่น ๆ จะลองศึกษาเพิ่มเติมครับ :)
ขอบคุณสำหรับทุกคำตอบครับ