benchaplin / hungarian-algorithm

Python 3 implementation of the Hungarian Algorithm
MIT License
70 stars 12 forks source link

I got a empty set error during run the algorithm on my graph #3

Open Hongjinwu opened 4 years ago

Hongjinwu commented 4 years ago

Thank you for sharing the library, Could you help me fix the problem? Traceback (most recent call last): File "/home/wuhj/miniconda3/lib/python3.7/site-packages/hungarian_algorithm/algorithm.py", line 447, in find_matching y = list(S_nbs - T)[0] IndexError: list index out of range

benchaplin commented 4 years ago

Can you share your input? @Hongjinwu

Hongjinwu commented 4 years ago

@benchaplin Thank you for answering my question. My input is:

{'5_cf': {'4_inf': 0.9999999999999998, '5_inf': 0.7934920476158721, '6_inf': 0.6666666666666669, '10_inf': -0.11111111111111102, '11_inf': -0.1400280084028009, '15_inf': -0.11111111111111108, '16_inf': -0.1400280084028009, '17_inf': -0.21821789023599228, '21_inf': -0.11111111111111106, '22_inf': -0.14002800840280097, '26_inf': -0.11111111111111104, '27_inf': -0.1400280084028009, '32_inf': -0.11111111111111108, '33_inf': -0.1400280084028009, '34_inf': -0.16666666666666666, '35_inf': -0.24459979523511433, '36_inf': -0.3333333333333334, '37_inf': -0.6666666666666666}, '6_cf': {'4_inf': 0.7934920476158721, '5_inf': 1.0, '6_inf': 0.8401680504168058, '10_inf': -0.14002800840280094, '11_inf': -0.17647058823529413, '15_inf': -0.14002800840280094, '16_inf': -0.17647058823529413, '17_inf': -0.2750095491084635, '21_inf': -0.14002800840280094, '22_inf': -0.1764705882352941, '26_inf': -0.1400280084028009, '27_inf': -0.1764705882352941, '32_inf': -0.14002800840280094, '33_inf': -0.17647058823529413, '34_inf': -0.21004201260420144, '35_inf': -0.3082573996425538, '36_inf': -0.42008402520840293, '37_inf': -0.8401680504168058}, '7_cf': {'4_inf': 0.6666666666666669, '5_inf': 0.8401680504168056, '6_inf': 1.0, '10_inf': -0.1666666666666666, '11_inf': -0.21004201260420138, '15_inf': -0.16666666666666666, '16_inf': -0.21004201260420138, '17_inf': -0.3273268353539885, '21_inf': -0.1666666666666666, '22_inf': -0.2100420126042014, '26_inf': -0.1666666666666666, '27_inf': -0.21004201260420138, '32_inf': -0.1666666666666666, '33_inf': -0.2100420126042014, '34_inf': -0.25000000000000006, '35_inf': -0.3668996928526715, '36_inf': -0.5000000000000001, '37_inf': -1.0}, '12_cf': {'4_inf': -0.11111111111111104, '5_inf': -0.1400280084028009, '6_inf': -0.1666666666666666, '10_inf': -0.11111111111111104, '11_inf': -0.1400280084028009, '15_inf': -0.11111111111111104, '16_inf': -0.1400280084028009, '17_inf': -0.21821789023599222, '21_inf': -0.11111111111111106, '22_inf': -0.14002800840280097, '26_inf': 0.9999999999999998, '27_inf': 0.7934920476158718, '32_inf': -0.11111111111111106, '33_inf': -0.1400280084028009, '34_inf': -0.16666666666666663, '35_inf': 0.4542567625794978, '36_inf': 0.33333333333333337, '37_inf': 0.1666666666666666}, '13_cf': {'4_inf': -0.1400280084028009, '5_inf': -0.1764705882352941, '6_inf': -0.2100420126042014, '10_inf': -0.1400280084028009, '11_inf': -0.17647058823529407, '15_inf': -0.14002800840280094, '16_inf': -0.17647058823529407, '17_inf': -0.27500954910846337, '21_inf': -0.14002800840280094, '22_inf': -0.1764705882352941, '26_inf': 0.7934920476158718, '27_inf': 1.0, '32_inf': -0.14002800840280094, '33_inf': -0.1764705882352941, '34_inf': -0.21004201260420144, '35_inf': 0.5724780279076, '36_inf': 0.420084025208403, '37_inf': 0.21004201260420144}, '16_cf': {'4_inf': -0.11111111111111108, '5_inf': -0.14002800840280097, '6_inf': -0.16666666666666663, '10_inf': -0.11111111111111108, '11_inf': -0.14002800840280097, '15_inf': -0.11111111111111108, '16_inf': -0.14002800840280097, '17_inf': -0.21821789023599236, '21_inf': -0.11111111111111108, '22_inf': -0.14002800840280097, '26_inf': -0.11111111111111106, '27_inf': -0.14002800840280097, '32_inf': 0.9999999999999998, '33_inf': 0.7934920476158721, '34_inf': 0.6666666666666665, '35_inf': 0.454256762579498, '36_inf': 0.33333333333333337, '37_inf': 0.1666666666666666}, '17_cf': {'4_inf': -0.1924500897298752, '5_inf': -0.242535625036333, '6_inf': -0.2886751345948128, '10_inf': -0.19245008972987515, '11_inf': -0.24253562503633308, '15_inf': -0.1924500897298752, '16_inf': -0.24253562503633305, '17_inf': -0.3779644730092274, '21_inf': -0.19245008972987515, '22_inf': -0.242535625036333, '26_inf': 0.5773502691896255, '27_inf': 0.7276068751089991, '32_inf': 0.5773502691896256, '33_inf': 0.4042260417272216, '34_inf': 0.2886751345948129, '35_inf': 0.7867957924694429, '36_inf': 0.5773502691896257, '37_inf': 0.28867513459481275}, '18_cf': {'4_inf': -0.2182178902359923, '5_inf': -0.2750095491084634, '6_inf': -0.32732683535398854, '10_inf': -0.21821789023599225, '11_inf': -0.2750095491084633, '15_inf': -0.2182178902359923, '16_inf': -0.2750095491084633, '17_inf': -0.4285714285714286, '21_inf': -0.21821789023599233, '22_inf': -0.2750095491084634, '26_inf': 0.5091750772173157, '27_inf': 0.6416889479197478, '32_inf': 0.5091750772173157, '33_inf': 0.6416889479197478, '34_inf': 0.4909902530309831, '35_inf': 0.8921425711997714, '36_inf': 0.6546536707079773, '37_inf': 0.3273268353539886}, '22_cf': {'4_inf': -0.11111111111111108, '5_inf': -0.1400280084028009, '6_inf': -0.16666666666666663, '10_inf': -0.11111111111111104, '11_inf': -0.1400280084028009, '15_inf': 0.9999999999999998, '16_inf': 0.7934920476158721, '17_inf': 0.5091750772173158, '21_inf': -0.11111111111111106, '22_inf': -0.14002800840280097, '26_inf': -0.11111111111111104, '27_inf': -0.1400280084028009, '32_inf': -0.11111111111111108, '33_inf': -0.1400280084028009, '34_inf': -0.16666666666666666, '35_inf': -0.24459979523511433, '36_inf': -0.3333333333333334, '37_inf': 0.1666666666666666}, '26_cf': {'4_inf': -0.11111111111111102, '5_inf': -0.1400280084028009, '6_inf': -0.1666666666666666, '10_inf': 0.9999999999999998, '11_inf': 0.7934920476158717, '15_inf': -0.11111111111111104, '16_inf': -0.1400280084028009, '17_inf': 0.5091750772173157, '21_inf': -0.11111111111111106, '22_inf': -0.1400280084028009, '26_inf': -0.11111111111111104, '27_inf': -0.1400280084028009, '32_inf': -0.11111111111111108, '33_inf': -0.1400280084028009, '34_inf': -0.1666666666666666, '35_inf': -0.2445997952351143, '36_inf': -0.3333333333333334, '37_inf': 0.16666666666666657}, '27_cf': {'4_inf': -0.1400280084028009, '5_inf': -0.17647058823529413, '6_inf': -0.2100420126042014, '10_inf': 0.7934920476158716, '11_inf': 1.0, '15_inf': -0.1400280084028009, '16_inf': -0.1764705882352941, '17_inf': 0.641688947919748, '21_inf': -0.14002800840280094, '22_inf': -0.1764705882352941, '26_inf': -0.1400280084028009, '27_inf': -0.17647058823529407, '32_inf': -0.14002800840280094, '33_inf': -0.17647058823529407, '34_inf': -0.21004201260420144, '35_inf': -0.30825739964255383, '36_inf': -0.42008402520840293, '37_inf': 0.21004201260420144}, '28_cf': {'4_inf': -0.19245008972987515, '5_inf': -0.24253562503633305, '6_inf': -0.2886751345948127, '10_inf': 0.5773502691896253, '11_inf': 0.7276068751089991, '15_inf': 0.5773502691896256, '16_inf': 0.4042260417272216, '17_inf': 0.8819171036881971, '21_inf': -0.19245008972987515, '22_inf': -0.242535625036333, '26_inf': -0.1924500897298751, '27_inf': -0.24253562503633308, '32_inf': -0.19245008972987515, '33_inf': -0.24253562503633305, '34_inf': -0.28867513459481275, '35_inf': -0.42365927286816174, '36_inf': -0.5773502691896257, '37_inf': 0.28867513459481264}, '29_cf': {'4_inf': -0.2182178902359923, '5_inf': -0.2750095491084635, '6_inf': -0.32732683535398854, '10_inf': 0.5091750772173157, '11_inf': 0.6416889479197478, '15_inf': 0.5091750772173157, '16_inf': 0.6416889479197478, '17_inf': 1.0, '21_inf': -0.21821789023599233, '22_inf': -0.27500954910846337, '26_inf': -0.21821789023599225, '27_inf': -0.2750095491084633, '32_inf': -0.2182178902359924, '33_inf': -0.27500954910846337, '34_inf': -0.3273268353539886, '35_inf': -0.48038446141526137, '36_inf': -0.6546536707079772, '37_inf': 0.3273268353539886}, '33_cf': {'4_inf': -0.11111111111111106, '5_inf': -0.14002800840280097, '6_inf': -0.1666666666666666, '10_inf': -0.11111111111111106, '11_inf': -0.14002800840280097, '15_inf': -0.11111111111111106, '16_inf': -0.14002800840280097, '17_inf': -0.2182178902359923, '21_inf': 0.9999999999999998, '22_inf': 0.7934920476158719, '26_inf': -0.11111111111111106, '27_inf': -0.14002800840280097, '32_inf': -0.11111111111111108, '33_inf': -0.14002800840280097, '34_inf': -0.16666666666666663, '35_inf': -0.2445997952351143, '36_inf': 0.33333333333333337, '37_inf': 0.1666666666666666}, '34_cf': {'4_inf': -0.14002800840280094, '5_inf': -0.1764705882352941, '6_inf': -0.21004201260420144, '10_inf': -0.14002800840280094, '11_inf': -0.1764705882352941, '15_inf': -0.14002800840280094, '16_inf': -0.1764705882352941, '17_inf': -0.2750095491084634, '21_inf': 0.793492047615872, '22_inf': 1.0, '26_inf': -0.14002800840280094, '27_inf': -0.1764705882352941, '32_inf': -0.14002800840280094, '33_inf': -0.17647058823529413, '34_inf': -0.21004201260420144, '35_inf': -0.30825739964255383, '36_inf': 0.420084025208403, '37_inf': 0.2100420126042015}, '35_cf': {'4_inf': -0.30151134457776363, '5_inf': -0.3799802978286744, '6_inf': -0.4522670168666455, '10_inf': 0.3685138655950444, '11_inf': 0.46442036401282377, '15_inf': 0.36851386559504434, '16_inf': 0.4644203640128239, '17_inf': 0.7237468644557455, '21_inf': 0.36851386559504434, '22_inf': 0.46442036401282394, '26_inf': -0.30151134457776363, '27_inf': -0.3799802978286743, '32_inf': -0.30151134457776363, '33_inf': -0.3799802978286742, '34_inf': -0.45226701686664544, '35_inf': -0.6637465183030646, '36_inf': -0.30151134457776374, '37_inf': 0.45226701686664533}, '36_cf': {'4_inf': -0.5773502691896256, '5_inf': -0.727606875108999, '6_inf': -0.8660254037844386, '10_inf': 0.19245008972987515, '11_inf': 0.24253562503633308, '15_inf': 0.19245008972987515, '16_inf': 0.24253562503633305, '17_inf': 0.3779644730092275, '21_inf': 0.19245008972987515, '22_inf': 0.242535625036333, '26_inf': 0.19245008972987515, '27_inf': 0.24253562503633305, '32_inf': 0.1924500897298752, '33_inf': 0.24253562503633305, '34_inf': 2.8043205843093636e-17, '35_inf': 0.1815682598006406, '36_inf': 0.34641016151377546, '37_inf': 0.8660254037844386}, '37_cf': {'4_inf': 0.07647191129018725, '5_inf': 0.09637388493048532, '6_inf': 0.11470786693528087, '10_inf': 0.07647191129018725, '11_inf': 0.09637388493048532, '15_inf': 0.07647191129018725, '16_inf': 0.09637388493048532, '17_inf': 0.15018785229652767, '21_inf': 0.07647191129018725, '22_inf': 0.09637388493048532, '26_inf': 0.07647191129018725, '27_inf': 0.09637388493048532, '32_inf': 0.07647191129018725, '33_inf': 0.09637388493048532, '34_inf': -0.4588314677411235, '35_inf': -0.3126409456585232, '36_inf': -0.22941573387056177, '37_inf': -0.11470786693528087}}

CommName commented 4 years ago

I have encounter the same error. Here is my input: {'N0': {'O1': 97.72152135586157, 'O4': 576.8664259712344, 'O5': 3.8572830879469073}, 'N1': {'O1': 666.9090904061551, 'O4': 6.930389542219099, 'O5': 571.0532477603115}, 'N2': {'O1': 534, 'O4': 5.830951894845301, 'O5': 532.3532661682466}} I have found out that if change the weight of N2 for O1 to a smaller number than for O5, for example: {'N0': {'O1': 97.72152135586157, 'O4': 576.8664259712344, 'O5': 3.8572830879469073}, 'N1': {'O1': 666.9090904061551, 'O4': 6.930389542219099, 'O5': 571.0532477603115}, 'N2': {'O1': 532, 'O4': 5.830951894845301, 'O5': 532.3532661682466}} It works fine. Hope this helps :)