algorithm - 最小 RGB 路径
问题描述
您将获得一个有向图G = (V, E)
加权边。节点颜色为红色、绿色和蓝色。如果一条从s到v的路径包含红绿色和一个蓝色节点,则该路径称为彩色路径。
找到s和每个v之间的最短路径,条件是路径应该是彩色的。如果有不止一条色彩缤纷的路径,请找到它们之间的最小值。
如果没有这样的路径返回 false。
我不知道如何开始。任何帮助是极大的赞赏!
解决方案
当您沿着从s到v的路径行走时,从一个“状态”到另一个“状态”包括您所在的节点以及您在旅途中所使用的节点颜色(7 种可能的组合) . 您的状态决定了您当前位置的哪些路径是有效的解决方案。
从您的原始图表中,制作(或想象)一个可访问状态的图表,其中一条边表示从一个状态转换到下一个状态的能力。该图对于每个原始图顶点最多有 7 个顶点。
现在使用 Dijkstra 算法找到从(s,red)(假设 s 是红色)到 ( v,red+green+blue)的最短路径
推荐阅读
- php - 在此服务器上未找到请求的 URL /ad/AD84567858
- sql - 使用连接解决子查询错误 ORA-01427
- python - 如何让组织功能更高效
- bash - 什么是冒号。连字符和无在bash脚本表达式中的意思?
- javascript - 我如何将我的 chart.js 脚本包含到管理员 lte
- php - PHP:如果返回的日期差异长于 X 年,则为彩色文本
- arduino - 是否可以将 libstdc 添加到 arduino-ide
- uwp - UWP 应用与 Windows 10 S 支持不兼容
- reactjs - chrome 扩展(在 React 中构建)和 Web 应用程序(也在 React 中)之间的通信
- c# - C# - 将两个列表连接成一个配对值列表