在matlab中运行python代码时未显示输出

时间:2017-03-14 15:54:10

标签: python matlab

我使用过线程 Call Python function from MATLAB 并在Matlab中成功实现了它。

然而,python中的以下代码反映了Matlab中没有输出,并且由于我不熟悉Python,我无法看到问题可能源自何处!

所以这里是python代码,它将图形作为输入,如:

# Hopcroft-Karp bipartite max-cardinality matching and max independent set
# David Eppstein, UC Irvine, 27 Apr 2002
#import sys
def bipartiteMatch(graph):
'''Find maximum cardinality matching of a bipartite graph (U,V,E).
The input format is a dictionary mapping members of U to a list
of their neighbors in V.  The output is a triple (M,A,B) where M is a
dictionary mapping members of V to their matches in U, A is the part
of the maximum independent set in U, and B is the part of the MIS in V.
The same object may occur in both U and V, and is treated as two
distinct vertices if this happens.'''

# initialize greedy matching (redundant, but faster than full search)
matching = {}
for u in graph:
    for v in graph[u]:
        if v not in matching:
            matching[v] = u
            break

while 1:
    # structure residual graph into layers
    # pred[u] gives the neighbor in the previous layer for u in U
    # preds[v] gives a list of neighbors in the previous layer for v in V
    # unmatched gives a list of unmatched vertices in final layer of V,
    # and is also used as a flag value for pred[u] when u is in the first       layer
    preds = {}
    unmatched = []
    pred = dict([(u,unmatched) for u in graph])
    for v in matching:
        del pred[matching[v]]
    layer = list(pred)

    # repeatedly extend layering structure by another pair of layers
    while layer and not unmatched:
        newLayer = {}
        for u in layer:
            for v in graph[u]:
                if v not in preds:
                    newLayer.setdefault(v,[]).append(u)
        layer = []
        for v in newLayer:
            preds[v] = newLayer[v]
            if v in matching:
                layer.append(matching[v])
                pred[matching[v]] = v
            else:
                unmatched.append(v)

    # did we finish layering without finding any alternating paths?
    if not unmatched:
        unlayered = {}
        for u in graph:
            for v in graph[u]:
                if v not in preds:
                    unlayered[v] = None
        return (matching,list(pred),list(unlayered))

    # recursively search backward through layers to find alternating paths
    # recursion returns true if found path, false otherwise
    def recurse(v):
        if v in preds:
            L = preds[v]
            del preds[v]
            for u in L:
                if u in pred:
                    pu = pred[u]
                    del pred[u]
                    if pu is unmatched or recurse(pu):
                        matching[v] = u
                        return 1
        return 0

    for v in unmatched: recurse(v)

并在上面的表格中给出一组最大匹配,

" "

我可以看到输出并在python中成功运行代码,但输出未在Matlab中显示,并返回<nav> <ul id="menu"> <li> <a>Menu</a> <div id="dropdown"> <ul> <li class="navLink active"><a><div class="navLine"></div>Home</a></li> <li class="navLink"><a><div class="navLine"></div>About</a></li> <li class="navLink"><a><div class="navLine"></div>Skills</a></li> <li class="navLink"><a><div class="navLine"></div>Work</a></li> <li class="navLink"><a><div class="navLine"></div>Contact</a></li> </ul> </div> </li> </ul> </nav> 作为答案。

所以非常感谢任何形式的帮助!

0 个答案:

没有答案