- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
具体来说,我想最大化我的利润。我从一个前缀节点(总部)开始,每次去到不同的节点都会获得一些利润(对于一个特定的节点,我只能获得一次这个利润,但我可以去那里多次)。但是要到达任何节点,我都要付出一些代价(沿着每条路径行进)。我想最大化我的收入并返回总部。如果这会导致我的收入最大化(因为到达那里的成本),我可以不去某些节点。我也可以在路线上多次遍历路径。有这样的TSP版本吗?可以解决吗? (我在想 Warshall 的可能适用)。
最佳答案
下面是一些试图解决这个问题的未经测试的伪代码。您只需要不断尝试节点,直到达到利润限制。
Home = StartNode
Result = [Home]
MaxProfit = 0
Sub Solve(last, currentProfit, path, visitedSet)
If currentProfit + graph.Nodes.Except(visitedSet).Sum(n => n.Profit) <= MaxProfit Then
Return
End If
If node == Home AndAlso currentProfit > MaxProfit Then
Result = path
MaxProfit = currentProfit
End If
For Each node In graph.Nodes
edge = graph.Edges.FirstOrDefault(e => e.Has(last) && e.Has(node))
If edge Then
profit = -edge.Cost
If Not visitedSet.Contains(node) Then
profit += node.Profit
End If
Solve(node, currentProfit + profit, path.Copy().Add(node), visitedSet.Copy().Add(node))
End If
Next
End Sub
Call Solve(Home, 0, [Home], [])
编辑 一项改进可能是预先计算从每个节点回家的最便宜路线,并使用它来优化利润约束。
关于algorithm - Travelling Salesman 的最大化版本,您不必前往某些节点并且可以通过多条路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946447/
此问题与 my other one 有关我希望从中得到一些想法: 本地托管变量(记录、接口(interface)……)是否有可能在不使用任何显式 out/var 参数或结果值的情况下在本地范围内运行并
我只是尝试使用 Rails 的时间助手方法 travel在我的功能规范之一中: scenario 'published_at allows to set a publishing date in th
我正在整合 Traveler 实现,并首先定义我的数据结构。我在尝试定义 Ship 时遇到了问题。我从一些简单的数据定义开始。 data Ship = Ship Cargo Hull Weapons
我目前正在研究旅行推销员的问题,想知道是否有人能够简单地解释持有的卡尔普下限。我一直在看很多论文,我正在努力理解它。如果有人可以简单地解释它,那将是很好的。 我也知道,有一种方法可以计算不包括起始顶点
我现在正在 Traveler 中尝试处理独立于玩家的游戏状态更新。作为引用,该项目是 here (开发分支是与此问题相关的分支)。 Libraries/Universe/GameState.hs 有一
我正在尝试实现一个滴答事件,并在下面进行了一个小测试,证明它不起作用。我很想知道为什么它不起作用。 gameloop :: TChan UAC -> IO () gameloo
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我有 JP Travel Joomla 模板。我应该修改哪个 css 来更改左上角菜单和主菜单的背景? 请帮忙。谢谢 最佳答案 根据 this site . 主菜单位于 #suckerfish 类的
具体来说,我想最大化我的利润。我从一个前缀节点(总部)开始,每次去到不同的节点都会获得一些利润(对于一个特定的节点,我只能获得一次这个利润,但我可以去那里多次)。但是要到达任何节点,我都要付出一些代价
嗯...我的老师,我的一些同学和我要建立一个Debugger项目。我们希望我们的调试器是交互式的,即当输入代码时,几秒后在某处显示结果,输入的代码改变时结果也随之改变。另一方面,在运行时,我们可以回滚
我正在试着制作一个直方图,画出行人行进的距离。。根据AnyLogic的这篇教程,在模型中绘制时间相当容易。但我找不到一种方法来标明所走的距离。在这里输入图像描述我知道你可以在数据库日志中看到距离,但有
通过尝试所有可能性,计算给定字符串的所有字符串排列可以在 O(n!) 中解决。 现在,看看旅行商问题,我们可以通过尝试城市的所有排列来解决它。假设我们有城市 A、B 和 C。 假设我们从城市 A 开始
是否可以将 git 存储库完全还原到 bitbucket 上的先前 X 修订版,以便在该 X 修订版之后不保留任何更改,并且不包含比 X 修订版更新的任何源代码更改。 例如,如果 repo 中有 1,
有多个用于 Java、.NET、C 和 C++ 的反向调试器。除非你算上使用 GDB 和 Javascript 的分散引用,否则我找不到任何实际的实现。我无法在 Eclipse 或 Intellij
我在整个 Internet 上看到这种类型的菜单是一种过滤数据的方式: 它有具体的名字吗?我特别想知道如何实现插入效果。我浏览了 Chrome 开发人员工具,但查看应用了 CSS 的 Chrome 仅
如果这是某个线程的重复,我很抱歉,但我真的不确定如何描述这个问题。 我想知道防止 2D 网格旅行者重复自身(即旅行到它之前已经旅行过的某个点)的最小数据结构是什么。行走者每次只能水平或垂直移动 1 步
我认为一切都在问题的标题中:farecast.com ( bing travel ) 背后的预测算法是什么? 网址:http://www.bing.com/travel/原名http://fareca
如何在 Visual Studio Code 中一次导航一个段落或代码块? 在其他编辑器中称为“阻止旅行”... 我似乎也无法使用匹配的括号导航。 http://vim.wikia.com/wiki/
我想要管理游戏输入的方式是轮询 TChan,然后在 eTick 发生时创建一个事件。但我尝试的方式有效吗? 数据UAC = UAC(AID,PlayerCommand)派生Show makeNetwo
我想计算和测试当我使用某些函数时 jQuery 的点击次数(阅读文档没有多大帮助)。 例如: var $e = $('#someId'); var result = $e.is('div'); 我们击
我是一名优秀的程序员,十分优秀!