Exemplo n.º 1
0
                woman = pair[1]
                if worst_husband_list[woman.index].index == -1:
                    worst_husband_list[woman.index] = man
                    continue
                if woman.prefers(worst_husband_list[woman.index], man):
                    worst_husband_list[woman.index] = man
        worst_pair_list = [(man.index, woman_index) for woman_index, man in enumerate(worst_husband_list)]
        worst_pair_list.sort()
        return worst_pair_list

if __name__ == "__main__":
    random.seed(0)

    # GaleShapleyアルゴリズム実行
    instance = Instance(7)
    gs_output = Algorithm.GaleShapley(instance)
    instance.show()
    print("Gale-Shapley出力")
    gs_output.show()
    assert(SMUtil.is_stable(instance, gs_output))

    # 全探索で男性最良ペア、女性最悪ペアを計算
    man_best_pair_list = Algorithm.calc_man_best_wife_pair(instance)
    print("男性最良ペア集合")
    for pair in man_best_pair_list:
        print("(" + str(pair[0]) + ", " + str(pair[1]) + ")", end=" ")
    print()
    woman_worst_pair_list = Algorithm.calc_woman_worst_husband_pair(instance)
    print("女性最悪ペア集合")
    for pair in woman_worst_pair_list:
        print("(" + str(pair[0]) + ", " + str(pair[1]) + ")", end=" ")