百科问答小站 logo
百科问答小站 font logo



如何统计拓扑排序的个数? 第1页

  

user avatar    网友的相关建议: 
      

DAG中的topological sort个数等价于统计一个partially ordered set上linear extension的个数,后面这个问题已知是#P-complete的,所以目前还没有polynomial-time的做法


user avatar   feng-kuang-shen-shi-92 网友的相关建议: 
      

看到本问题下面的一个非常惊艳的匿名回答。

好久没看到了。

DAG中的拓扑排序的个数等价于统计一个偏序集合上线性组合的个数。

而求这个线性组合的后面这个问题已经有人证明了是P完全问题。

NP问题就不解释了。

现在举例子来解释。

1、存在回路如何进行拓扑排序

跟书上说的不同,存在回路的连通有向图是可以排序的。方法就是缩点。即把回路当成一个要素(结点)来处理。

上面是缩点的示意,就不再解释。

2、对抗解释结构模型(AISM)

上面是文科生经常用到的一个研究方法。流程如下:

上面是另外一种计算方法。计算流程如下:

3、哈斯图与偏序与对抗层级拓扑图

最终求出的对抗层级拓扑图就是一种拓扑排序

上面就是哈斯图,又叫对抗哈斯图,也叫对抗层级拓扑图。

任何一边的图,从上到小一个个数下来就是一个拓扑序。

按理只数个数这不是一个P完全问题。

根据每一层的组合情况可以直接得出。

但是观察右边的F5,它可以跟F6同一层。

而且转化成线性列的时候,要去重,这就蛋疼了。

如果碰巧是刚性系统,即没有活动要素的时候。

只算个数就很容易。

比如上面这种没有跃迁要素的。

也就是两边是一样的。

那好办,直接算组合就出来了。是一个多项式的解。


user avatar   sd0061 网友的相关建议: 
      

应该只有指数级做法,状态压缩动态规划可以做到 O((n+m)2^n),n为总点数m为总边数。




  

相关话题

  算法A时间复杂度O(n²),算法B时间复杂度为O(n³),为什么选择算法B而不选算法A的6个理由? 
  逃离丧尸包围的游戏,你能否逃生? 
  二分查找有几种写法?它们的区别是什么? 
  如果按国家分,哪个国家编程最厉害?有没有代表人物? 
  C++笔试算法题允许用stl函数吗? 
  如何激怒一位计算机科学爱好者? 
  报了蓝桥杯比赛,几乎零基础,如何准备,请大牛指导一下。谢谢? 
  Alice 和 Bob 各有一个 0-9 的数,他们怎样能在不暴露自己数的前提下知道双方数字是否相同? 
  一道程序员面试题? 
  是否存在一个字符串,它的md5值是其自身? 

前一个讨论
能解释下怎么从这个有向图生成如图的集合链?(数字电路并行全入度拓扑排序优化算法)?
下一个讨论
哪位大神能通俗的解释下拓扑不变量是什么?灰常感谢~





© 2024-11-09 - tinynew.org. All Rights Reserved.
© 2024-11-09 - tinynew.org. 保留所有权利