【问题标题】:C algorithm for Hopcroft-KarpHopcroft-Karp 的 C 算法
【发布时间】: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,我需要输入成对的数字,告诉边的边界在哪里?

标签: c graph matching


【解决方案1】:

Vermagav 实现 Hopcroft–Karp Algorithm 带有类,其他功能不直接映射到 C。也许从该实现开始是您的最佳选择。如果开始创建 Vermagav 项目的 Github 分支,我们都可以为您提供帮助。

【讨论】:

  • 为什么不喜欢我的评论。没有评论?
  • 这是一个有趣的想法。我今天可能会分叉这个,然后看看 C 中的实现。
  • 感谢 Melmac271!让我们知道什么时候完成的。也许我们可以提供帮助。但是在同一个项目中使用 C++ 实现,因此可以比较两种语言实现之间的性能。
  • 好吧,事实上,我只需要一个任何语言的程序来计算我的图形问题,所以 C++ 就可以了,但现在我有了用我正在学习的语言自己实现它的野心( C)...所以我们会看到
  • 嘿@Young 开发人员,我已经用一些 cmets 编辑了我的第一篇文章并链接到 repo。
猜你喜欢
  • 2011-09-16
  • 2022-01-10
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2018-04-09
  • 2022-01-18
相关资源
最近更新 更多