ทำการเรียกใช้งาน package Munkres

In [2]:
using Munkres

ทดสอบการจัดเรียง Matrix ให้อยู่ในรูป Diagonally Dominant Matrix (DDM) เนื่องจาก munkres ทำการหา Matrix ที่ค่าผลรวมใน diagonal มีค่าน้อยสุด เราจึงต้องใส่ค่า -A เข้าไปในฟังกชัน munkres

In [3]:
A = [3 7 13; 12 3 -5; 1 5 3;]
row = munkres(-A)
Out[3]:
3-element Array{Int64,1}:
 3
 1
 2

ผลลัพธ์จาก munkres จะอยู่ในรูปของเวคเตอร์ที่บอกว่าแต่ละแถวใน Matrix A จะต้องย้ายไปอยู่แถวไหน หากต้องการทำให้ A เป็น DDM อย่างเช่นตามตัวอย่าง เราพบว่า แถวแรกของ A ต้องย้ายไปอยู่ แถวที่ 3 ในเมทริกซ์ใหม่ (สมมติให้ชื่อว่า B) แถวที่สองของ A ต้องย้ายไปอยู่แถวที่ 1 ของ B และแถวที่สามของ A ต้องไปอยู่ แถวที่ 2 สอง B

In [ ]:
B = zeros(size(A))
for i=1:length(row)
    B[row[i],:] = A[i,:]
end
B

โค้ดส่วนสุดท้าย ทำการ copy แถวแต่ละแถวของ A ให้ไปอยู่ใน matrix B ตามตำแหน่งที่ควรจะเป็น โดยเราทำการ loop เพื่อจับแต่ละแถวของ A ไปวาง ในตำแหน่งที่ถูกต้องใน B