fbpx
วิกิพีเดีย

ปัญหาถุงกระสอบ

ปัญหาถุงกระสอบ (0/1 Knapsack problem) คือ การเลือกหยิบของใส่ถุงโดยให้มีมูลค่ารวมสูงที่สุด แต่น้ำหนักโดยรวมต้องไม่เกินน้ำหนักที่บรรจุได้ โดยของแต่ละชิ้นจะมีน้ำหนักและมูลค่าแตกต่างกันไป ที่เรียกว่า 0/1 นั้นเพราะเมื่อหยิบของจะเป็นก้อนๆ จะไม่แบ่งย่อยเป็นชิ้นๆ แต่ถ้าแบ่งย่อยได้จะเป็นอีกปัญหาหนึ่ง (fractional knapsack problem)

ตัวอย่างของปัญหากระเป๋าเป้สะพายหลัง(constraint): ควรเลือกกล่องใดเพื่อเพิ่มจำนวนเงินในขณะที่ยังคงรักษาน้ำหนักโดยรวมไว้ไม่เกินหรือเท่ากับ 15 กิโลกรัม ปัญหาข้อจำกัด หลายอย่างอาจพิจารณาทั้งน้ำหนักและปริมาตรของกล่อง (วิธีแก้: ถ้าให้ใส่กล่องจำนวนเท่าใดก็ได้ ให้ใช้กล่องสี่เหลี่ยมสีเหลือง 3 กล่องและกล่องสีเทา 3 กล่อง แต่ถ้าใส่ได้อย่างละอันก็ให้ใส่ทุกอันนอกจากกล่องสีเขียว)

การแก้ปัญหา

- วิธีที่ตรงไปตรงมาที่สุดคือการไล่ทดลอง หยิบ/ไม่หยิบ ของแต่ละชิ้น แล้วหามูลค่ารวมที่มากที่สุดโดยน้ำหนักรวมไม่เกินที่กำหนด

- การใช้ Dynamic programming เข้ามาเพื่อหลีกเลี่ยงการทำซ้ำๆ โดยสร้าง array K[][]

def knapSack(W, wt, val, n):  K = [[0 for x in range(W+1)] for x in range(n+1)]   # Build table K[][] in bottom up manner  for i in range(n+1):  for w in range(W+1):  if i==0 or w==0:   K[i][w] = 0  elif wt[i-1] <= w:   K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w])  else:   K[i][w] = K[i-1][w]   return K[n][W] 

อ้างอิง

detohm. 0-1-knapsack-problem-. FINOMENA. 14 May 2018

ญหาถ, งกระสอบ, knapsack, problem, การเล, อกหย, บของใส, งโดยให, ลค, ารวมส, งท, แต, ำหน, กโดยรวมต, องไม, เก, นน, ำหน, กท, บรรจ, ได, โดยของแต, ละช, นจะม, ำหน, กและม, ลค, าแตกต, างก, นไป, เร, ยกว, นเพราะเม, อหย, บของจะเป, นก, อนๆ, จะไม, แบ, งย, อยเป, นช, นๆ, แต, า. pyhathungkrasxb 0 1 Knapsack problem khux kareluxkhyibkhxngisthungodyihmimulkharwmsungthisud aetnahnkodyrwmtxngimekinnahnkthibrrcuid odykhxngaetlachincaminahnkaelamulkhaaetktangknip thieriykwa 0 1 nnephraaemuxhyibkhxngcaepnkxn caimaebngyxyepnchin aetthaaebngyxyidcaepnxikpyhahnung fractional knapsack problem twxyangkhxngpyhakraepaepsaphayhlng constraint khwreluxkklxngidephuxephimcanwnengininkhnathiyngkhngrksanahnkodyrwmiwimekinhruxethakb 15 kiolkrm pyhakhxcakd hlayxyangxacphicarnathngnahnkaelaprimatrkhxngklxng withiaek thaihisklxngcanwnethaidkid ihichklxngsiehliymsiehluxng 3 klxngaelaklxngsietha 3 klxng aetthaisidxyanglaxnkihisthukxnnxkcakklxngsiekhiyw karaekpyha aekikh withithitrngiptrngmathisudkhuxkarilthdlxng hyib imhyib khxngaetlachin aelwhamulkharwmthimakthisudodynahnkrwmimekinthikahnd karich Dynamic programming ekhamaephuxhlikeliyngkarthasa odysrang array K def knapSack W wt val n K 0 for x in range W 1 for x in range n 1 Build table K in bottom up manner for i in range n 1 for w in range W 1 if i 0 or w 0 K i w 0 elif wt i 1 lt w K i w max val i 1 K i 1 w wt i 1 K i 1 w else K i w K i 1 w return K n W xangxing aekikhdetohm 0 1 knapsack problem FINOMENA 14 May 2018ekhathungcak https th wikipedia org w index php title pyhathungkrasxb amp oldid 7624104, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม