Algorithm 寻找一种计算图的节点的算法

Algorithm 寻找一种计算图的节点的算法,algorithm,graph,Algorithm,Graph,假设有一个无向多图,即(G,e)对,其中G是一组有限的节点,e是一组有限的边。我正在寻找一种算法,在以下约束条件下为每个节点分配一个字符串值 一, 每个节点都有一组限制允许值的约束(可能为空)。我希望至少支持以下类型的值约束: 最小长度(x)(该值至少为给定长度的字符数) 最大长度(x)(该值最多为给定长度的字符数) regexp(x)(该值符合给定的正则表达式) 数字(该值仅由数字组成) 理想情况下,将来应该可以添加对新类型约束的支持 二, 有两种类型的边: 不同的 同样, 这意味着应

假设有一个无向多图,即(G,e)对,其中G是一组有限的节点,e是一组有限的边。我正在寻找一种算法,在以下约束条件下为每个节点分配一个字符串值

一,

每个节点都有一组限制允许值的约束(可能为空)。我希望至少支持以下类型的值约束:

  • 最小长度(x)(该值至少为给定长度的字符数)
  • 最大长度(x)(该值最多为给定长度的字符数)
  • regexp(x)(该值符合给定的正则表达式)
  • 数字(该值仅由数字组成)
理想情况下,将来应该可以添加对新类型约束的支持

二,

有两种类型的边:

  • 不同的
  • 同样,
这意味着应为相关节点分配不同/相同的值(表示不相等/相等的字符串)

三,

最后,可以为每个节点分配一组(可能为空)以下类型的约束:

  • 与(x)不同
  • 等于(x)
这意味着应该为给定节点分配一个不同于或等于给定节点的值


我希望算法要么报告不一致性(如果不存在此类评估),要么返回符合标准的评估结果(理想情况下是小的,即赋值由少量字符组成的评估结果)(否则)


请注意,我不希望您为我提供算法的详细描述。如果您能给我一些提示,让我走上正轨,我将不胜感激。

一些建议:

  • 通过将由“相同”边连接的所有节点合并到单个节点中,可以简化问题。(请注意,此单个节点的约束将是所有单个约束的并集。)

  • 简化后的问题似乎非常类似于,因为您需要为每个节点选择标签,以便连接节点的标签不同

  • 不幸的是,图形着色是NP完全的,所以除非节点数量非常少,否则很难得到有效的算法

图形着色在计算上很困难。决定是否 一个给定的图允许对给定的k进行k-染色,除了k的情形 =1和k=2。特别是,计算色数是NP困难的。即使在平面上,3-着色问题仍然是NP完全问题 四次图

  • 如果你不一定需要一个完美的解决方案,这可能会有帮助
    • 一些建议:

      • 通过将由“相同”边连接的所有节点合并到单个节点中,可以简化问题。(请注意,此单个节点的约束将是所有单个约束的并集。)

      • 简化后的问题似乎非常类似于,因为您需要为每个节点选择标签,以便连接节点的标签不同

      • 不幸的是,图形着色是NP完全的,所以除非节点数量非常少,否则很难得到有效的算法

      图形着色在计算上很困难。决定是否 一个给定的图允许对给定的k进行k-染色,除了k的情形 =1和k=2。特别是,计算色数是NP困难的。即使在平面上,3-着色问题仍然是NP完全问题 四次图

      • 如果你不一定需要一个完美的解决方案,这可能会有帮助

      谢谢您的帮助。添加1,分配给新节点的集合真的是原始约束集合的交集,还是联合?你说得很对,联合是正确的术语而不是交集,我将编辑答案。谢谢你的帮助。添加1,分配给新节点的集合真的是原始约束集合的交集,还是一个并集?你说得很对,并集是正确的术语,而不是交集,我将编辑答案。