百科问答小站 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为总边数。




  

相关话题

  请问这个式子有没有简便算法(写法)? 
  哪些看似与图论无关的问题可用图论模型解决? 
  如何统计拓扑排序的个数? 
  你写过哪些比较酷的十行以内的 Matlab 代码? 
  在中国象棋中,最少用多少只马才能控制住整个棋盘?(马控棋盘)? 
  能否详细说明一下对称算法中的DES,AES? 
  为什么 360 面试官说 Trie 树没用? 
  cpp是不是最方便研究算法的语言? 
  程序员能 20 分钟徒手写出一个没 bug 的 KMP 算法吗?(可以调试) 
  有什么算法可以很快的找出所有完全对称日呢? 

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





© 2025-04-05 - tinynew.org. All Rights Reserved.
© 2025-04-05 - tinynew.org. 保留所有权利