当前位置: 首页 > 面试题库 >

Python连接的组件

周作人
2023-03-14
问题内容

我正在get_connected_components为一个类编写一个函数Graph

def get_connected_components(self):
    path=[]
    for i in self.graph.keys():
        q=self.graph[i]
        while q:
            print(q)
            v=q.pop(0)
            if not v in path:
                path=path+[v]
    return path

我的图是:

{0: [(0, 1), (0, 2), (0, 3)], 1: [], 2: [(2, 1)], 3: [(3, 4), (3, 5)], \
4: [(4, 3), (4, 5)], 5: [(5, 3), (5, 4), (5, 7)], 6: [(6, 8)], 7: [], \
8: [(8, 9)], 9: []}

其中键是节点,值是边。我的功能给了我这个连接的组件:

[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), (5, 3), \
(5, 4), (5, 7), (6, 8), (8, 9)]

但是我将有两个不同的连接组件,例如:

[[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), \
(5, 3), (5, 4), (5, 7)],[(6, 8), (8, 9)]]

我不明白我在哪里犯了错误。谁能帮我?


问题答案:

让我们简化图形表示:

myGraph = {0: [1,2,3], 1: [], 2: [1], 3: [4,5],4: [3,5], 5: [3,4,7], 6: [8], 7: [],8: [9], 9: []}

这里,我们有一个函数返回一个字典,该字典的键是根,值是连接的组件:

def getRoots(aNeigh):
    def findRoot(aNode,aRoot):
        while aNode != aRoot[aNode][0]:
            aNode = aRoot[aNode][0]
        return (aNode,aRoot[aNode][1])
    myRoot = {} 
    for myNode in aNeigh.keys():
        myRoot[myNode] = (myNode,0)  
    for myI in aNeigh: 
        for myJ in aNeigh[myI]: 
            (myRoot_myI,myDepthMyI) = findRoot(myI,myRoot) 
            (myRoot_myJ,myDepthMyJ) = findRoot(myJ,myRoot) 
            if myRoot_myI != myRoot_myJ: 
                myMin = myRoot_myI
                myMax = myRoot_myJ 
                if  myDepthMyI > myDepthMyJ: 
                    myMin = myRoot_myJ
                    myMax = myRoot_myI
                myRoot[myMax] = (myMax,max(myRoot[myMin][1]+1,myRoot[myMax][1]))
                myRoot[myMin] = (myRoot[myMax][0],-1) 
    myToRet = {}
    for myI in aNeigh: 
        if myRoot[myI][0] == myI:
            myToRet[myI] = []
    for myI in aNeigh: 
        myToRet[findRoot(myI,myRoot)[0]].append(myI) 
    return myToRet

让我们尝试一下:

print getRoots(myGraph)

{8:[6、8、9],1:[0、1、2、3、4、5、7]}



 类似资料:
  • 问题内容: 我有一组数据是通过将相似的子项目匹配在一起,然后按“类别”将这些相似的项目分组而创建的。 现在,必须以使每个“ group_id”内的相关类别分组在一起的方式匹配结果类别。在下面的示例中,一个匹配项是A-> B-> C-> D-> E-> F-> G,这是通过逐行重复获得的。 我已经发布了当前答案,该答案适用于此简单数据集,但是由于实际数据集最多包含1M行,并且每个“ group_id

  • 用法同WebSocket 服务 - 连接分组

  • imi 支持对 WebSocket 的连接(fd)进行逻辑分组,你可以方便地对用户进行分组消息推送。 所有的分组针对服务器,所以需要 imi 的服务器对象才可以调用下面这些方法,比如在WebSocketController中可以使用$this->server。 分组的使用 配置 服务器配置文件: [ 'beans' => [ // 分组 'ServerGro

  • 问题内容: 我正在尝试验证目标是否公开了https Web服务。我有通过HTTP连接的代码,但不确定如何通过HTTPS连接。我已经阅读过您使用SSL,但我也阅读过它不支持证书错误。我得到的代码来自python docs: 有谁知道如何连接到HTTPS? 我已经尝试过HTTPSConenction,但是它以错误代码响应,声称httplib没有属性HTTPSConnection。我也没有socket.

  • 本文向大家介绍Python MySQL数据库连接池组件pymysqlpool详解,包括了Python MySQL数据库连接池组件pymysqlpool详解的使用技巧和注意事项,需要的朋友参考一下 引言 pymysqlpool (本地下载)是数据库工具包中新成员,目的是能提供一个实用的数据库连接池中间件,从而避免在应用中频繁地创建和释放数据库连接资源。 功能 连接池本身是线程安全的,可在多线程环境下

  • 问题内容: 我正在做一个Python项目,我必须从数据库中查找和检索数据。 我尝试过创建一个类,在其中声明连接并进行查询,这是到目前为止我所没有的。 因此,主要问题是该变量和不能从同一类的其他def /函数中调用。我想要得到的是一个精细的查询,在这里我可以进行查询并检索其内容。这将总结我的代码,因此我应该这样做。 问题答案: 我通常使用psycopg2 / postgres,但这是我经常使用的基本