【发布时间】:2018-11-19 06:52:09
【问题描述】:
我正在研究图形算法理论(我是数学家,还没有计算机科学),我确实有一些与自己匹配的问题,为此我出于严重的原因使用 Hopcroft-Karp (Hopcroft–Karp algorithm)。 我不想用它手动解决它们,所以我想用一个程序来解决它。但是因为我正在学习 C,所以我会对使用 C 代码来解决它感兴趣。我发现了一些关于 C++ 的想法,但我还不能阅读(可能是几年后的下一个编程语言......)
有没有人在他的计算机上有一个很好的 C 编程 Hopcroft Karp 算法并想与我和社区分享?这不仅仅是代码,我会惊讶于它如何在 C 中工作的解释。我还无法想象如何使用指针来使用 BFS 和 DFS。 如果有人有代码代码+说明,请提前感谢。
====
编辑: 正如我对 Young Developers 所说的,我现在已经分叉了这个 repo,并在没有太多知识的情况下尽可能地将它实现到 C 中。 您可以在 main.c 文件中找到所有内容,没有任何标题或不存在。 “TODO”所在的每个地方都意味着,还有一些事情要做。 所以此刻,我实现并将所有内容更改为 C 功能,如您在此处看到的。 https://github.com/Dabendorf/hopcroft-karp/blob/master/main.c
它正在编译,但在某处我找不到一个错误,因为它给出了错误的结果。 这与以下事实有关,即原作者从 1 开始计数,而我使用的是普通数组,从 0 开始计数。但这只是我的猜测。 所以错误也可能在其他地方。
有人看吗?
【问题讨论】:
-
你在 C++ 中看到过 github.com/vermagav/hopcroft-karp 这个实现吗?
-
这很有趣,虽然我以前见过。我不是 100% 确定 input_data 函数的输入。想象一下,我确实有 8 个节点 (2x4),它们总共有 10 条边,然后两边的 indize 为 1 到 4,我需要输入成对的数字,告诉边的边界在哪里?