fbpx
วิกิพีเดีย

ขั้นตอนวิธีฮังกาเรียน

ขั้นตอนวิธีชาวฮังกาเรียน หรือ ฮังกาเรียนอัลกอริทึม (อังกฤษ: Hungarian Algorithm ) คือ ขั้นตอนวิธีการหาค่าเหมาะสมที่สุดเชิงการจัด ซึ่งใช้ในการแก้ ปัญหาการกำหนดงาน ถูกคิดค้นและตั้งชื่อโดย แฮโรลด์ วิลเลียม คุห์น ในปี ค.ศ. 1955 ที่ตั้งชื่อนี้เพราะว่าขั้นตอนวิธีนี้มีพื้นฐานส่วนใหญ่จากการคิดของนักคณิตศาสตร์ชาวฮังกาเรียน 2 คน คือ เดแนช เคอนิก (Dénes Kőnig) และ แยเนอ แอแกร์วารี (Jenő Egerváry) ต่อมาเจมส์ มุนเครสได้นำขั้นตอนวิธีนี้มาตรวจสอบในปี ค.ศ. 1957 และได้พบว่ามีประสิทธิภาพเชิงเวลาเป็นแบบ strongly polynomial ตั้งแต่นั้นมาขั้นตอนวิธีนี้จึงเป็นที่รู้จักในชือว่า ขั้นตอนวิธีคุห์น-มุนเครส หรือ ขั้นตอนวิธีการกำหนดงานมุนเครส โดยมีประสิทธิภาพเชิงเวลาของขั้นตอนวิธีดั้งเดิมเป็น แต่อย่างไรก็ตามขั้นตอนวิธีนี้ แจ็ค เอดมันด์ และ ริชาร์ด แมนนิ่งคาร์ป ได้สามารถปรับปรุงให้มีประสิทธิภาพเชิงเวลาเป็น ได้ และในปี ค.ศ. 2006 มีการค้นพบว่า คาร์ล กุสตาฟ จาโคบี (Carl Gustav Jacobi) สามารถแก้ปัญหาการกำหนดงานได้ในคริสต์ศตวรรษที่ 19 และได้เผยแพร่ในปี ค.ศ. 1890 ในภาษาละติน

ปัญหาการกำหนดงาน

ขั้นตอนวิธีฮังกาเรียนนี้ใช้แก้ปัญหาการกำหนดงาน ซึ่งเป็นปัญหาชนิดพิเศษของปัญหากำหนดการเชิงเส้นอีกลักษณะหนึ่ง มีรูปแบบคล้ายคลึงกับปัญหาการขนส่ง โดยปัญหาการกำหนดงานจะมีลักษณะดังนี้

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

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

ล้างห้องน้ำ ถูพื้น เช็ดกระจก
สมชาย 100 200 300
สมหญิง 300 300 300
สมคิด 300 300 200

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

อธิบายขั้นตอนวิธี

  • ขั้นตอนวิธีนี้จะต้องมีจำนวนงานและคนงานเท่ากัน หากมีอย่างใดอย่างหนึ่งน้อยกว่าแล้ว เราจำเป็นต้องเพิ่มตัวลวงเข้าไปให้มีจำนวนที่เท่ากัน โดยต้นทุนของตัวลวงนี้จะมีค่าเป็นต้นทุนที่มากที่สุดในตาราง
  • หากเราไม่ต้องการหาต้นทุนน้อยสุด แต่ต้องการหาต้นทุนมากสุดเราสามารถทำได้โดย แก้ไขตารางต้นทุนในแต่ละช่องโดยสมมติให้ MAX คือค่าที่มากที่สุดในตาราง สมาชิกช่องที่ i,j จะมีค่าใหม่เป็น (MAX - สมาชิกข่องที่ i,j)

เมื่อเรามีตารางต้นทุนของการทำงานทุกงานของทุกคนงานแล้วเราจะมาทำตามลำดับขั้นตอนดังนี้

  1. เราจะหาค่าที่น้อยสุดในแต่ละแถวแล้วนำมาลบกับทุกๆสมาชิกในแต่ละแถวนั้นๆ ดังนั้นจะได้ตารางใหม่ที่มีสมาชิกในแต่ละแถวมีค่าเป็น 0 อย่างน้อย 1 ตัว
  2. ต่อจากนั้นเราจะทำแบบเดียวกับขั้นตอนที่ 1 ในทุกๆคอลัมน์ คือหาค่าที่น้อยที่สุดในแต่ละคอลัมน์แล้วนำมาลบกับสมาชิกทุกตัวในคอลัมน์นั้นๆ
  3. หากเรากำหนดงานให้คนงานได้โดยใช้เลข 0 เป็นตัวบอกว่าคนงานใดทำงานใดได้บ้างถึงจะต้นทุนน้อยสุด แล้วสามารถกำหนดงานให้ได้โดยไม่ซ้ำกันแล้ว แสดงว่าเราได้คำตอบอันเป็นที่ต้องการแล้ว ซึ่งอาจจะมีคำตอบได้หลายแบบ แต่ถ้าหากยังไม่สามารถกำหนดงานให้ได้โดยไม่ซ้ำกัน เราต้องขีดเส้นในแถวหรือคอลัมน์ใดๆให้ผ่าน 0 ครบทุกตัว โดยใช้จำนวนเส้นน้อยที่สุด ดังนี้
    1. ให้เราเลือกแถวที่สามารถกำหนดงานให้ได้โดยไม่ซ้ำกันเท่าที่เป็นไปได้
    2. จากนั้นเราจะดูแถวที่ไม่ได้เลือกไว้ และให้ทำสัญลักษณ์ที่แถวนั้น
      1. เราจะดูว่ามีค่า 0 อยู่ในคอลัมน์ใดบ้างในแถวที่เราทำสัญลักษณ์ แล้วเราจะทำสัญลักษณ์ที่คอลัมน์นั้น
      2. ดูที่คอลัมน์ที่ทำสัญลักษณ์ไว้ หากแถวใดมี 0 ก็ทำสัญลักษณ์ที่แถวนั้นด้วย
      3. วนทำจนไม่สามารถทำสัญลักษณ์ได้
    3. ให้เราขีดเส้นในคอลัมน์ที่สัญลักษณ์ และขีดเส้นแถวที่ไม่ได้ทำสัญลักษณ์ จะได้จำนวนเส้นน้อยสุด (หากว่าได้จำนวนเส้นเท่ากับจำนวนงานแล้วแสดงว่าเราได้คำตอบที่ต้องการแล้ว ให้ข้ามไปยังขั้นตอน 5)
  4. เราจะหาสมาชิกในช่องที่ไม่ได้ถูกขีดเส้นและมีค่าน้อยสุด นำไปลบกับสมาชิกทุกตัวที่ไม่ได้ถูกขีดเส้น และนำไปบวกับสมาชิกทุกตัวที่ถูกขีดทับสองเส้น และทำตามขั้นตอนที่ 3-4 ใหม่ จนสามารถกำหนดงานได้โดยไม่ซ้ำกันแล้วจึงไปยังขั้นตอนที่ 5
  5. เมื่อเราได้ตารางที่สามารถขีดเส้นผ่าน 0 ครบทุกตัวโดยใช้จำนวนเส้นเท่ากับจำนวนงานแล้ว หมายความว่าเราได้ตารางซึ่งเป็นคำตอบแล้วคือสามารถกำหนดงานให้คนงานโดยไม่ซ้ำกันและมีต้นทุนน้อยสุด โดยดูว่าช่องใดเป็น 0 ก็คือให้คนงานทำงานนั้นได้ ซึ่งอาจมีคำตอบได้มากกว่า 1 แบบ

ตัวอย่างการใช้ขั้นตอนวิธี

ตัวอย่างการทำขั้นตอนวิธีฮังกาเรียน สมมติให้มีคนงาน ก ข ค ง แ และมี งาน ๑ ๒ ๓ ๔ โดยมีตารางต้นทุนดังนี้

32 27 29 30
28 34 26 22
22 24 20 29
31 27 29 26

โดยต่อไปจะขอละตัวระบุคนงานและตัวระบุงานซึ่งยังมีลำดับเหมือนตารางข้างต้น

1. หาค่าน้อยสุดในแต่ละแถวแล้วนำมาลบออกจากสมาชิกทุกๆตัวในแถว จะได้ตารางใหม่เป็น

5 0 2 3
6 12 4 0
2 4 0 9
5 1 3 0

2. จากนั้นหาค่าน้อยสุดในแต่ละคอลัมน์แล้วนำมาลบออกจากสมาชิกทุกๆตัวในคอลัมน์ จะได้ตารางใหม่เป็น

3 0 2 3
4 12 4 0
0 4 0 9
3 1 3 0

3. แล้วเรายังไม่สามารถจัดงานให้คนงานให้มีต้นทุนน้อยสุดโดยไม่ซ้ำกันได้ จึงต้องทำขั้นต่อไป

3 0 2 3
4 12 4 0
0 4 0 9
3 1 3 0

4. เลือกแถวที่สามารถกำหนดงานโดยไม่ซ้ำกันเท่าที่เป็นไปได้ คือแถว 1 2 และ 3

3 0 2 3
4 12 4 0
0 4 0 9
3 1 3 0

5. แล้วทำสัญลักษณ์ที่แถวที่ไม่ได้เลือกไว้ คือแถวที่ 4 แล้วทำสัญลักษณ์ที่คอลัมน์ 4 ที่มีค่า 0 อยู่ จากนั้นดูที่คอลัมน์ 4 พบว่ามี 0 อยู่แถวที่ 2 จึงทำสัญลักษณ์ในแถวที่ 2 แล้วไม่มีค่า 0 ที่คอลัมน์อื่น จึงไปทำขั้นต่อไป

×
3 0 2 3
× 4 12 4 0
0 4 0 9
× 3 1 3 0

6. จากนั้นขีดเส้นให้เราขีดเส้นในคอลัมน์ที่สัญลักษณ์ และขีดเส้นแถวที่ไม่ได้ทำสัญลักษณ์

×
3 0 2 3
× 4 12 4 0
0 4 0 9
× 3 1 3 0

7. จะใช้สมาชิกในช่องที่ไม่ได้ถูกขีดเส้นและมีค่าน้อยสุด คือค่า 1 ลบออกจากสมาชิกทุกตัวที่ไม่ถูกขีดเส้นและ นำไปบวกเข้ากับสมาชิกที่ถูกขีดเส้นสองครั้ง

×
3 0 2 4
× 3 11 3 0
0 4 0 10
× 2 0 2 0

8. จากนั้นจะวนทำจนสามารถกำหนดงานได้โดยไม่ซ้ำ จึงได้ตารางดังนี้ เป็นตารางที่สามารถกำหนดงานให้คนงานได้โดยไม่ซ้ำกันและจะใช้ต้นทุนน้อยที่สุดด้วย โดยค่า 0 บอกถึงว่าคนงานต้องทำงานนั้นๆ หากมีหลายตัวคือทำสามารถได้หลายงาน ทำให้อาจจะมีคำตอบออกมาได้หลายแบบ

1 0 0 4
1 11 1 0
0 6 0 12
0 0 0 0

และจากตารางจะได้คำตอบทั้งหมด 3 แบบ ดังนี้

ผลเฉลยที่ 1 ผลเฉลยที่ 2 ผลเฉลยที่ 3
กำหนดงาน ต้นทุน กำหนดงาน ต้นทุน กำหนดงาน ต้นทุน
ก → ๒ 27 ก → ๒ 27 ก → ๓ 29
ข → ๔ 22 ข → ๔ 22 ข → ๔ 22
ค → ๑ 22 ค → ๓ 20 ค → ๑ 22
ง → ๓ 29 ง → ๑ 31 ง → ๒ 27
รวม 100 รวม 100 รวม 100

รหัสเทียม

สำหรับทุกๆแถวของตาราง หาค่าที่น้อยสุดในแถวแล้วไปลบออกจากสมาชิกในแถวทุกตัว สำหรับทุกๆคอลัมน์ของตาราง หาค่าที่น้อยสุดในคอลัมน์แล้วไปลบออกจากสมาชิกในคอลัมน์ทุกตัว ตราบเท่าที่ จำนวนคนงานที่กำหนดงานให้ได้โดยไม่ซ้ำกัน < จำนวนงาน { ลากเส้นผ่าน 0 ทุกตัวโดยใช้เส้นน้อยสุด หาค่าที่น้อยที่สุดที่ไม่ถูกลากเส้นผ่านนำไปลบกับสมาชิกทุกตัวที่ไม่ถูกลากเส้นผ่าน และไปบวกกับสมาชิกทุกตัวที่ถูกลากเส้นผ่าน 2 เส้น } ฟังก์ชัน หาจำนวนคนงานที่กำหนดงานได้โดยไม่ซ้ำกัน ให้ n คือ จำนวนงาน, count คือ ตัวนับจำนวนคนงานที่สามารถกำหนดงานให้ได้โดยไม่ซ้ำ { แถวข้อมูลกำหนดงาน[n] = -1 แถวกำกับ[n] = 0 คอลัมน์กำกับ[n] = 0 สำหรับทุกๆคนงาน i = 0 to n -1 สำหรับทุกๆงาน j = 0 to n -1 ถ้า ตาราง[i][j] เท่ากับ 0 และ แถวกำกับ[i] กับ คอลัมน์กำกับ[j] ไม่เท่ากับ 1 {  แถวข้อมูลกำหนดงาน[i] = j (คนงาน i ทำงาน j)  แถวกำกับ[i] = แถวกำกับ[j] = 1  count++ } ถ้า count ไม่เท่ากับจำนวนงาน คืนค่า count หรือถ้า count เท่ากับจำนวนงานแล้ว คืน แถวข้อมูลกำหนดงาน } ฟังก์ชัน ลากเส้นผ่าน 0 ทุกตัวโดยใช้จำนวนเส้นน้อยสุด คืนค่าเป็นรายการของแถวและคอลัมน์ที่ลากเส้นผ่าน { เลือกแถวที่ไม่สามารถกำหนดงานให้ได้โดยไม่ซ้ำทำสัญลักษณ์ไว้ ตราบเท่าที่ ยังสามารถทำสัญลักษณ์ที่แถวหรือคอลัมน์ใดๆได้ { ทำสัญลักษณ์ที่คอลัมน์ที่มีค่า 0 ในแถวที่ทำสัญลักษณ์ไว้ ที่คอลัมน์ที่ทำสัญลักษณ์ไว้ หากแถวใดมี 0 ก็ทำสัญลักษณ์ที่แถวนั้นด้วย } ลากเส้นคอลัมน์ที่ทำสัญลักษณ์ และแถวที่ไม่ได้ทำสัญลักษณ์ คืนรายการของแถวและคอลัมน์ที่ลากเส้นผ่าน } 

วิเคราะห์ประสิทธิภาพเชิงเวลา

ขั้นตอนวิธีนี้มีขั้นตอนย่อยๆหลายขั้นตอน

  1. การลบสมาชิกทุกตัวด้วยสมาชิกที่มีค่าน้อยสุดในแต่ละแถวและคอลัมน์จะใช้เวลา  
  2. แล้วฟังก์ชันหาจำนวนคนงานที่กำหนดงานได้ก็ใช้เวลา  
  3. การลากเส้นผ่าน 0 ทุกตัวโดยใช้เส้นโดยที่สุดนั้นจะใช้เวลา   โดยจะทำเป็นจำนวนอย่างมากไม่เกินจำนวนงานครั้ง ทำให้ในวงวนนี้ใช้เวลา  

ดังนั้นสรุปแล้วประสิทธิภาพโดยรวมของขั้นตอนวิธีนี้เป็น  

อ้างอิง

  • Beryl Castello, The Hungarian Algorithm
  • Hungarian Algorithm tutorial

แหล่งข้อมูลอื่น

  • Mordecai J. Golin, Bipartite Matching and the Hungarian Method, Course Notes, Hong Kong University of Science and Technology.
  • R. A. Pilgrim, Munkres' Assignment Algorithm. Modified for Rectangular Matrices, Course notes, Murray State University.
  • Mike Dawes, The Optimal Assignment Problem, Course notes, University of Western Ontario.
  • On Kuhn's Hungarian Method – A tribute from Hungary, András Frank, Egervary Research Group, Pazmany P. setany 1/C, H1117, Budapest, Hungary.

ตัวอย่าง ซอร์สโค้ด เพิ่มเติม

  • Java implementation
  • Python implementation (ดูเพิ่มเติม ที่นี่)
  • Ruby implementation with unit tests
  • C# implementation
  • Online interactive implementation
  • Serial and parallel implementations.
  • Implementation in Matlab and C
  • Perl implementation
  • Lisp implementation
  • C++ implementation
  • Another C++ implementation with unit tests
  • Another Java implementation with JUnit tests (Apache 2.0)
  • Matlab implementation

นตอนว, งกาเร, ยน, บทความน, องการการจ, ดหน, ดหมวดหม, ใส, งก, ภายใน, หร, อเก, บกวาดเน, อหา, ให, ณภาพด, ณสามารถปร, บปร, งแก, ไขบทความน, ได, และนำป, ายออก, จารณาใช, ายข, อความอ, นเพ, อช, ดข, อบกพร, องล, งก, ามภาษา, ในบทความน, ไว, ให, านและผ, วมแก, ไขบทความศ, กษาเพ. bthkhwamnitxngkarkarcdhna cdhmwdhmu islingkphayin hruxekbkwadenuxha ihmikhunphaphdikhun khunsamarthprbprungaekikhbthkhwamniid aelanapayxxk phicarnaichpaykhxkhwamxunephuxchichdkhxbkphrxnglingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisudkhntxnwithichawhngkaeriyn hrux hngkaeriynxlkxrithum xngkvs Hungarian Algorithm khux khntxnwithikarhakhaehmaasmthisudechingkarcd sungichinkaraek pyhakarkahndngan thukkhidkhnaelatngchuxody aehorld wileliym khuhn inpi kh s 1955 thitngchuxniephraawakhntxnwithinimiphunthanswnihycakkarkhidkhxngnkkhnitsastrchawhngkaeriyn 2 khn khux edaench ekhxnik Denes Konig aela aeyenx aexaekrwari Jeno Egervary txmaecms munekhrsidnakhntxnwithinimatrwcsxbinpi kh s 1957 aelaidphbwamiprasiththiphaphechingewlaepnaebb strongly polynomial tngaetnnmakhntxnwithinicungepnthiruckinchuxwa khntxnwithikhuhn munekhrs hrux khntxnwithikarkahndnganmunekhrs odymiprasiththiphaphechingewlakhxngkhntxnwithidngedimepn O n 4 displaystyle O n 4 aetxyangirktamkhntxnwithini aeckh exdmnd aela richard aemnningkharp idsamarthprbprungihmiprasiththiphaphechingewlaepn O n 3 displaystyle O n 3 id aelainpi kh s 2006 mikarkhnphbwa kharl kustaf caokhbi Carl Gustav Jacobi samarthaekpyhakarkahndnganidinkhriststwrrsthi 19 aelaidephyaephrinpi kh s 1890 inphasalatin enuxha 1 pyhakarkahndngan 2 xthibaykhntxnwithi 3 twxyangkarichkhntxnwithi 4 rhsethiym 5 wiekhraahprasiththiphaphechingewla 6 xangxing 7 aehlngkhxmulxun 7 1 twxyang sxrsokhd ephimetimpyhakarkahndngan aekikhkhntxnwithihngkaeriynniichaekpyhakarkahndngan sungepnpyhachnidphiesskhxngpyhakahndkarechingesnxiklksnahnung mirupaebbkhlaykhlungkbpyhakarkhnsng odypyhakarkahndngancamilksnadngni canwnnganaelacanwnkhnnganethakn inkrnithiimethacatxngephimnganhruxkhnngansmmtiaelwaetwaswnidkhadhayipaelaihtnthunkarkahndnganmakthisud khnngancathanganidephiyng 1 ngan nganaetlangancamikhnrbphidchxbephiyngkhnediyw mitnthunkarkahndngan j displaystyle j ih i displaystyle i thaepn C i j displaystyle C ij sungmiepahmaykhxngkarkahndngankhuxkarthaihekidtnthunnxythisud hruxerasamarthddaeplngihhakhatnthunmakthisudidyktwxyangechn smmtiihmikhnngan 3 khn khux smchay smhying aelasmkhid aelwmingan 3 ngankhux langhxngna thuphun aelaechdkrack eracakahndnganihaetlakhnxyangircungcaekidtnthunnxythisud odycaaethntnthunkarkahndtangdwyemthriks dngni langhxngna thuphun echdkracksmchay 100 200 300smhying 300 300 300smkhid 300 300 200emuxeraichkhntxnwithihngkaeriynaelwcaidphllphthkarkahndnganihkhnnganaetlakhn sungcaekidtnthunnxythisuddngni smchaylanghxngna smhyingthuphun smkhidechdkrackxthibaykhntxnwithi aekikhkhntxnwithinicatxngmicanwnnganaelakhnnganethakn hakmixyangidxyanghnungnxykwaaelw eracaepntxngephimtwlwngekhaipihmicanwnthiethakn odytnthunkhxngtwlwngnicamikhaepntnthunthimakthisudintarang hakeraimtxngkarhatnthunnxysud aettxngkarhatnthunmaksuderasamarththaidody aekikhtarangtnthuninaetlachxngodysmmtiih MAX khuxkhathimakthisudintarang smachikchxngthi i j camikhaihmepn MAX smachikkhxngthi i j emuxeramitarangtnthunkhxngkarthanganthukngankhxngthukkhnnganaelweracamathatamladbkhntxndngni eracahakhathinxysudinaetlaaethwaelwnamalbkbthuksmachikinaetlaaethwnn dngnncaidtarangihmthimismachikinaetlaaethwmikhaepn 0 xyangnxy 1 tw txcaknneracathaaebbediywkbkhntxnthi 1 inthukkhxlmn khuxhakhathinxythisudinaetlakhxlmnaelwnamalbkbsmachikthuktwinkhxlmnnn hakerakahndnganihkhnnganidodyichelkh 0 epntwbxkwakhnnganidthanganididbangthungcatnthunnxysud aelwsamarthkahndnganihidodyimsaknaelw aesdngwaeraidkhatxbxnepnthitxngkaraelw sungxaccamikhatxbidhlayaebb aetthahakyngimsamarthkahndnganihidodyimsakn eratxngkhidesninaethwhruxkhxlmnidihphan 0 khrbthuktw odyichcanwnesnnxythisud dngni iheraeluxkaethwthisamarthkahndnganihidodyimsaknethathiepnipid caknneracaduaethwthiimideluxkiw aelaihthasylksnthiaethwnn eracaduwamikha 0 xyuinkhxlmnidbanginaethwthierathasylksn aelweracathasylksnthikhxlmnnn duthikhxlmnthithasylksniw hakaethwidmi 0 kthasylksnthiaethwnndwy wnthacnimsamarththasylksnid iherakhidesninkhxlmnthisylksn aelakhidesnaethwthiimidthasylksn caidcanwnesnnxysud hakwaidcanwnesnethakbcanwnnganaelwaesdngwaeraidkhatxbthitxngkaraelw ihkhamipyngkhntxn 5 eracahasmachikinchxngthiimidthukkhidesnaelamikhanxysud naiplbkbsmachikthuktwthiimidthukkhidesn aelanaipbwkbsmachikthuktwthithukkhidthbsxngesn aelathatamkhntxnthi 3 4 ihm cnsamarthkahndnganidodyimsaknaelwcungipyngkhntxnthi 5 emuxeraidtarangthisamarthkhidesnphan 0 khrbthuktwodyichcanwnesnethakbcanwnnganaelw hmaykhwamwaeraidtarangsungepnkhatxbaelwkhuxsamarthkahndnganihkhnnganodyimsaknaelamitnthunnxysud odyduwachxngidepn 0 kkhuxihkhnnganthangannnid sungxacmikhatxbidmakkwa 1 aebbtwxyangkarichkhntxnwithi aekikhtwxyangkarthakhntxnwithihngkaeriyn smmtiihmikhnngan k kh kh ng ae aelami ngan 1 2 3 4 odymitarangtnthundngni 1 2 3 4k 32 27 29 30kh 28 34 26 22kh 22 24 20 29ng 31 27 29 26odytxipcakhxlatwrabukhnnganaelatwrabungansungyngmiladbehmuxntarangkhangtn1 hakhanxysudinaetlaaethwaelwnamalbxxkcaksmachikthuktwinaethw caidtarangihmepn 5 0 2 36 12 4 02 4 0 95 1 3 02 caknnhakhanxysudinaetlakhxlmnaelwnamalbxxkcaksmachikthuktwinkhxlmn caidtarangihmepn 3 0 2 34 12 4 00 4 0 93 1 3 03 aelwerayngimsamarthcdnganihkhnnganihmitnthunnxysudodyimsaknid cungtxngthakhntxip 3 0 2 34 12 4 00 4 0 93 1 3 04 eluxkaethwthisamarthkahndnganodyimsaknethathiepnipid khuxaethw 1 2 aela 3 3 0 2 3 4 12 4 0 0 4 0 93 1 3 05 aelwthasylksnthiaethwthiimideluxkiw khuxaethwthi 4 aelwthasylksnthikhxlmn 4 thimikha 0 xyu caknnduthikhxlmn 4 phbwami 0 xyuaethwthi 2 cungthasylksninaethwthi 2 aelwimmikha 0 thikhxlmnxun cungipthakhntxip 3 0 2 3 4 12 4 00 4 0 9 3 1 3 06 caknnkhidesniherakhidesninkhxlmnthisylksn aelakhidesnaethwthiimidthasylksn 3 0 2 3 4 12 4 00 4 0 9 3 1 3 07 caichsmachikinchxngthiimidthukkhidesnaelamikhanxysud khuxkha 1 lbxxkcaksmachikthuktwthiimthukkhidesnaela naipbwkekhakbsmachikthithukkhidesnsxngkhrng 3 0 2 4 3 11 3 00 4 0 10 2 0 2 08 caknncawnthacnsamarthkahndnganidodyimsa cungidtarangdngni epntarangthisamarthkahndnganihkhnnganidodyimsaknaelacaichtnthunnxythisuddwy odykha 0 bxkthungwakhnngantxngthangannn hakmihlaytwkhuxthasamarthidhlayngan thaihxaccamikhatxbxxkmaidhlayaebb 1 0 0 41 11 1 00 6 0 120 0 0 0aelacaktarangcaidkhatxbthnghmd 3 aebb dngni phlechlythi 1 phlechlythi 2 phlechlythi 3kahndngan tnthun kahndngan tnthun kahndngan tnthunk 2 27 k 2 27 k 3 29kh 4 22 kh 4 22 kh 4 22kh 1 22 kh 3 20 kh 1 22ng 3 29 ng 1 31 ng 2 27rwm 100 rwm 100 rwm 100rhsethiym aekikhsahrbthukaethwkhxngtarang hakhathinxysudinaethwaelwiplbxxkcaksmachikinaethwthuktw sahrbthukkhxlmnkhxngtarang hakhathinxysudinkhxlmnaelwiplbxxkcaksmachikinkhxlmnthuktw trabethathi canwnkhnnganthikahndnganihidodyimsakn lt canwnngan lakesnphan 0 thuktwodyichesnnxysud hakhathinxythisudthiimthuklakesnphannaiplbkbsmachikthuktwthiimthuklakesnphan aelaipbwkkbsmachikthuktwthithuklakesnphan 2 esn fngkchn hacanwnkhnnganthikahndnganidodyimsakn ih n khux canwnngan count khux twnbcanwnkhnnganthisamarthkahndnganihidodyimsa aethwkhxmulkahndngan n 1 aethwkakb n 0 khxlmnkakb n 0 sahrbthukkhnngan i 0 to n 1 sahrbthukngan j 0 to n 1 tha tarang i j ethakb 0 aela aethwkakb i kb khxlmnkakb j imethakb 1 aethwkhxmulkahndngan i j khnngan i thangan j aethwkakb i aethwkakb j 1 count tha count imethakbcanwnngan khunkha count hruxtha count ethakbcanwnnganaelw khun aethwkhxmulkahndngan fngkchn lakesnphan 0 thuktwodyichcanwnesnnxysud khunkhaepnraykarkhxngaethwaelakhxlmnthilakesnphan eluxkaethwthiimsamarthkahndnganihidodyimsathasylksniw trabethathi yngsamarththasylksnthiaethwhruxkhxlmnidid thasylksnthikhxlmnthimikha 0 inaethwthithasylksniw thikhxlmnthithasylksniw hakaethwidmi 0 kthasylksnthiaethwnndwy lakesnkhxlmnthithasylksn aelaaethwthiimidthasylksn khunraykarkhxngaethwaelakhxlmnthilakesnphan wiekhraahprasiththiphaphechingewla aekikhkhntxnwithinimikhntxnyxyhlaykhntxn karlbsmachikthuktwdwysmachikthimikhanxysudinaetlaaethwaelakhxlmncaichewla 8 n 2 displaystyle Theta n 2 aelwfngkchnhacanwnkhnnganthikahndnganidkichewla 8 n 2 displaystyle Theta n 2 karlakesnphan 0 thuktwodyichesnodythisudnncaichewla O n 2 displaystyle O n 2 odycathaepncanwnxyangmakimekincanwnngankhrng thaihinwngwnniichewla O n 3 displaystyle O n 3 dngnnsrupaelwprasiththiphaphodyrwmkhxngkhntxnwithiniepn O n 3 displaystyle O n 3 xangxing aekikhBeryl Castello The Hungarian Algorithm Hungarian Algorithm tutorialaehlngkhxmulxun aekikhMordecai J Golin Bipartite Matching and the Hungarian Method Course Notes Hong Kong University of Science and Technology R A Pilgrim Munkres Assignment Algorithm Modified for Rectangular Matrices Course notes Murray State University Mike Dawes The Optimal Assignment Problem Course notes University of Western Ontario On Kuhn s Hungarian Method A tribute from Hungary Andras Frank Egervary Research Group Pazmany P setany 1 C H1117 Budapest Hungary twxyang sxrsokhd ephimetim aekikh Java implementation Python implementation duephimetim thini Ruby implementation with unit tests C implementation Online interactive implementation Serial and parallel implementations Implementation in Matlab and C Perl implementation Lisp implementation C implementation Another C implementation with unit tests Another Java implementation with JUnit tests Apache 2 0 Matlab implementationekhathungcak https th wikipedia org w index php title khntxnwithihngkaeriyn amp oldid 9247854, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

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