小编jan*_*vdl的帖子

使用Tarjan算法在图中枚举循环

我试图使用Tarjan算法确定有向图中的周期,该算法在1972年Septermber的研究论文"有向图的基本电路的枚举"中提出.

我正在使用Python来编写算法代码,并使用邻接列表来跟踪节点之间的关系.

图形可视化

所以在下面的"G"中,节点0指向节点1,节点1指向节点4,6,7 ...等.

G = [[1], [4, 6, 7], [4, 6, 7], [4, 6, 7], [2, 3], [2, 3], [5, 8], [5, 8], [], []]
N = len(G)

points = []
marked_stack = []
marked = [False for x in xrange(0,N)]

g = None
def tarjan(s, v, f):
    global g
    points.append(v)
    marked_stack.append(v)
    marked[v] = True

    for w in G[v]:
        if w < s:            
            G[v].pop(G[v].index(w))
        elif w == s:
            print points
            f = True
        elif marked[w] == False:
            if f …
Run Code Online (Sandbox Code Playgroud)

python algorithm graph-theory tarjans-algorithm

5
推荐指数
1
解决办法
994
查看次数

在LISP中反转列表的前n个元素

假设我有一个名为"numbers"的列表(3 1 4 5 2).我正在寻找一个命令,它将列表从索引0反转到任意索引,即(反向数字2),它将新列表作为(4 1 3 5 2).

我试过谷歌搜索,但找不到合适的功能,我在这个阶段自己编写这个功能太多了.

谢谢.

lisp reverse list

0
推荐指数
1
解决办法
253
查看次数