- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
给定一个正方形网格(无向图),是否有任何方法可以找到一条路径,该路径将访问尽可能多的顶点。
每个顶点只能访问一次。这意味着路径将是汉密尔顿之旅(如果存在),或者是最长的路径。
图中有一些墙。墙是一个顶点,没有边连接到邻居。
我有一个解决方案(在脑海中),但它非常类似于找到所有路径并选择第一个访问了最多顶点的路径。
Find a path will visit all neighbors from given start vertex to the end (no way can go).
look back to the current path until the starting vertex, if there is any vertex has neighbors outside of the current path, process like step 1 from the found vertex and its new neighbors.
analysis and choose the longest path (has most vertices).
我找到了 similar problem ,不明白@Juho 是什么意思:
Choose a successor si to top(S), and try to find a path si−1⇝si avoiding vertices in F. If a path is found, insert the vertices on the path si−1⇝si to F.
我没有足够的声誉在那里添加评论。
我猜我的解决方案遇到了性能问题。有什么建议吗?
最佳答案
这更像是哈密顿路径问题。它是 NP 完全的,因此您需要进行详尽的搜索。让你的蛮力。我只能建议可以使用线程来缓解您的性能问题;在可用线程之间平均分配起始顶点。如果找到哈密顿路径,则终止,否则最长路径获胜。
算法本身只需要找到所有可能的路径。我可能有一种启发式方法,可以停止为似乎会产生不良结果的路径烦恼,但这意味着解决方案可能并不总是正确的。
关于c++ - 如何找到一条路径访问尽可能多的顶点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040205/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!