python 2.7中的karger最小切割算法

2024-01-24

这是我的 karger min cut 算法的代码。 据我所知,我实现的算法是正确的。但我没有得到正确的答案。如果有人可以检查出了什么问题,我将不胜感激。

import random
from random import randint

#loading data from the text file#
with open('data.txt') as req_file:
    mincut_data = []
    for line in req_file:
        line = line.split()
        if line:
            line = [int(i) for i in line]
            mincut_data.append(line)

#extracting edges from the data #            
edgelist = []
nodelist = []
for every_list in mincut_data:
    nodelist.append(every_list[0])
    temp_list = []
    for temp in range(1,len(every_list)):
        temp_list = [every_list[0], every_list[temp]]
        flag = 0
        for ad in edgelist:
            if set(ad) == set(temp_list):
                flag = 1
        if flag == 0 :
            edgelist.append([every_list[0],every_list[temp]])


#karger min cut algorithm#
while(len(nodelist) > 2):
    val = randint(0,(len(edgelist)-1))
    print val
    target_edge = edgelist[val]
    replace_with = target_edge[0]
    should_replace = target_edge[1]
    for edge in edgelist:
        if(edge[0] == should_replace):
            edge[0] = replace_with
        if(edge[1] == should_replace):
            edge[1] = replace_with
    edgelist.remove(target_edge)
    nodelist.remove(should_replace)
    for edge in edgelist:
        if edge[0] == edge[1]:
            edgelist.remove(edge)

print ('edgelist remaining: ',edgelist)
print ('nodelist remaining: ',nodelist)

测试用例数据为:

1 2 3 4 7
2 1 3 4
3 1 2 4
4 1 2 3 5
5 4 6 7 8
6 5 7 8
7 1 5 6 8
8 5 6 7

请将其复制到文本文件中并另存为“data.txt”并运行程序

答案应该是: 最小切割次数为 2 并且 切口位于边缘 [(1,7), (4,5)]


这段代码也有效。

import random, copy
data = open("***.txt","r")
G = {}
for line in data:
    lst = [int(s) for s in line.split()]
    G[lst[0]] = lst[1:]   

def choose_random_key(G):
    v1 = random.choice(list(G.keys()))
    v2 = random.choice(list(G[v1]))
    return v1, v2

def karger(G):
    length = []
    while len(G) > 2:
        v1, v2 = choose_random_key(G)
        G[v1].extend(G[v2])
        for x in G[v2]:
            G[x].remove(v2)
            G[x].append(v1) 
        while v1 in G[v1]:
            G[v1].remove(v1)
        del G[v2]
    for key in G.keys():
        length.append(len(G[key]))
    return length[0]

def operation(n):
    i = 0
    count = 10000   
    while i < n:
        data = copy.deepcopy(G)
        min_cut = karger(data)
        if min_cut < count:
            count = min_cut
        i = i + 1
    return count


print(operation(100))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 2.7中的karger最小切割算法 的相关文章

  • 带有指针数组的 cython

    我在 python 中有一个 numpy ndarrays 列表 具有不同的长度 并且需要非常快速地访问 python 中的列表 我认为指针数组就可以解决问题 我试过 float type t list of arrays no of ar
  • 将打开关闭的 Google Chrome 浏览器添加到 Selenium linkedin_scraper 代码中

    我正在尝试抓取一些知名人士的 LinkedIn 个人资料 该代码获取一堆 LinkedIn 个人资料 URL 然后使用Selenium and scrape linkedin收集信息并将其作为 json 文件保存到文件夹中 我遇到的问题是
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • Python 使用 M2Crypto 通过 S/MIME 对消息进行签名

    我现在花了几个小时 但找不到我的错误 我想要一个简单的例程来创建 S MIME 签名消息 稍后可以与 smtplib 一起使用 这是我到目前为止所拥有的 usr bin python2 7 coding utf 8 from future
  • 可移植的非关系数据库

    我想尝试 尝试非关系数据库 最好的解决方案是 便携式 这意味着它不需要安装 理想情况下 只需将目录复制粘贴到某个地方即可使其工作 我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具 可从 python 访问 适用于 Windows
  • Selenium Webdriver - Python - leboncoin - pb 选择带重音的按钮

    我正在尝试在以下网站上自动填写表格 https www leboncoin fr https www leboncoin fr 我用 Selenium IDE 录制了一个脚本 我有一个通过单击 Se 连接器 按钮并填写我的密码和用户名来自动
  • Pandas Pivot_Table :非数字值的行计算百分比

    这是我在数据框 df 中的数据 Document Name Time SPS2315511 A 1 HOUR SPS2315512 B 1 2 HOUR SPS2315513 C 2 3 HOUR SPS2315514 C 1 HOUR S
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • 当 DetailView 遇到时更新模型字段。 [姜戈]

    我有一个类似的 DetailViewviews py views py class CustomView DetailView context object name content model models AppModel templa
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • Floyd-Warshall 算法:获取最短路径

    假设一个图由一个表示n x n维数邻接矩阵 我知道如何获得所有对的最短路径矩阵 但我想知道有没有办法追踪所有最短路径 Blow是python代码实现 v len graph for k in range 0 v for i in range
  • 管理文件字段当前 url 不正确

    在 Django 管理中 只要有 FileField 编辑页面上就会有一个 当前 框 其中包含指向当前文件的超链接 但是 此链接会附加到当前页面 url 因此会导致 404 因为不存在这样的页面 例如 http 127 0 0 1 8000
  • 使用python中的mysql连接器正确从mysql数据库获取blob

    当执行以下代码时 import mysql connector connection mysql connector connect connection params here cursor connection cursor curso
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • django 组合对两个不同基本模型的查询

    我有两个不同的查询集 我想将两个查询集合并 q1 tbl nt 123 objects values list id value geometry filter restriction height exclude condition id
  • 测试中的模型 - Django 1.7 问题

    我正在尝试将我的项目移植为使用 Django 1 7 除了一件事之外 一切都很好 测试文件夹内的模型 Django 1 7 新迁移在内部运行 migrate 命令 在运行syncdb之前 这意味着如果模型未包含在迁移中 它将不会填充到数据库
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i
  • 在读/写二进制数据结构时访问位域

    我正在为二进制格式编写一个解析器 这种二进制格式涉及不同的表 这些表同样采用二进制格式 通常包含不同的字段大小 其中 50 100 个之间 大多数这些结构都有位域 并且在 C 语言中表示时看起来像这样 struct myHeader uns
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见

随机推荐

  • Hadoop ChainMapper、ChainReducer [重复]

    这个问题在这里已经有答案了 我对 Hadoop 比较陌生 并试图弄清楚如何使用 ChainMapper ChainReducer 以编程方式链接作业 多个映射器 减速器 我找到了一些部分示例 但没有一个完整且有效的示例 我当前的测试代码是
  • 使用 url 参数时,iPhone 的 Web 应用程序从主屏幕切换到 Safari

    我为 iPhone 开发了一个网络应用程序 并将其添加为书签并添加到 iPhone 的主屏幕上 不过 我注意到它有一个问题 它会按预期工作 直到我导航到应用程序中具有查询字符串和参数的页面 例如 www mywebapp com page0
  • 在 calc() 中使用分数 (fr) 给出“无效的属性值”

    我正在尝试使用calc 使用 CSS 网格时在某些宽度上 所以我正在尝试的一件事是 grid template columns calc 1fr 50px calc 1fr 50px 因为我希望它是两个分数 但删除 50px 因为它用于填充
  • Meteor:从客户端上传文件到 Mongo 集合 vs 文件系统 vs GridFS

    Meteor 很棒 但它缺乏对传统文件上传的原生支持 有多种选项可以处理文件上传 来自客户 可以使用以下方式发送数据 Meteor call saveFile data 或 collection insert file data POST
  • 查找 maven 用于运行 testng 测试用例的类路径

    我可以使用 maven 的哪些选项来确定 maven 正在使用哪个类路径运行 testng 测试用例 您没有提供 Maven 版本 但至少在 3 x 也可能是 2 x 中您可以使用 X 调试 选项运行命令 这样 测试类路径就会在测试运行之前
  • 如何更改默认的WCF服务绑定?

    在我的 WCF 中 我有一些服务 其中之一必须对消息大小有更大的限制 因此我必须创建另一个绑定并更改配置 但是 我在 Web config 中看不到我的服务的任何配置 什么也没有 有什么是默认的吗 那么我可以在哪里更改服务绑定呢 在 WCF
  • 错误:无法访问 com.facebook.imagepipeline.animated.base.AnimatedImage 的 AnimatedImage 类文件未找到

    我收到错误 错误 无法访问 AnimatedImage 未找到 com facebook imagepipeline animated base AnimatedImage 的类文件 尝试运行时https github com WhatsA
  • 使用 C# 创建 Windows 窗体向导

    我是 C Net 中的 Windows 窗体应用程序创建向导的新手 所以我对向导创建没有任何想法 请给我一些关于创建多个向导的想法 问候 拉维 有很多方法可以做到 为每个向导步骤创建一个表单是可能的 但非常尴尬 而且丑陋的是 当用户改变步骤
  • VSTO:应用重点

    有人知道如何查看 VSTO 项目的 Excel 窗口是否处于活动 焦点状态吗 我正在寻找相当于System Windows Window IsActive 我也曾为此感到沮丧 您在 VSTO 应用程序中使用对话框吗 如果是这样 我所做的就是
  • 如何检测滑动手势方向?

    我需要检测我的滑动手势的方向 但我遇到了问题 手势有效 但我不知道如何检测方向 swipeGesture UISwipeGestureRecognizer alloc initWithTarget self action selector
  • 没有System32如何解决“java.lang.UnsatisfiedLinkError:找不到依赖库”?

    我正在 Eclipse 上开发一个 Java 项目 该项目通过 JNI 使用 C OpenCV 库 一些图像处理算法是在本机端使用 OpenCV 实现的 我希望通过 JNI 从 java 中使用它们 我构建了一个 C DLL 项目来链接到
  • 根据环境选择C二进制文件

    我使用特定标志 Os O2 march native 及其组合 编译了代码 以便产生更快的执行时间 但我的问题是我并不总是在同一台机器上运行 因为在我的实验室中有几台不同的机器 有时我在 MacOS 或 Linux 中运行 这两种情况都具有
  • 在 Windows 8 中覆盖证书验证

    我正在尝试在 Windows 8 Consumer Preview 上的 ssl 套接字中使用自签名证书 我收到这个异常 异常 System Runtime InteropServices COMException 0x800B0109 证
  • 验证 cypress 的加载指示器显示

    我有以下规格 context Contact update gt it only Can update contact gt const address new address 123 const cardId c2card 38AF429
  • 如何在实体框架中将 Int 属性替换为 Enum?

    我有一个实体类 它的属性具有数据类型 Int 的基础数据库列 但实际上我希望该属性是一个枚举 有什么方法可以指定该属性返回一个枚举吗 间接地 比如so http weblogs asp net alexeyzakharov archive
  • scrypt 输出的最大长度是多少?

    我想存储一个scrypt http en wikipedia org wiki Scrypt 数据库中的散列密码 我可以预期的最大长度是多少 根据https github com wg scrypt https github com wg
  • 为什么我们需要添加

    为什么我们需要在 Facebook 应用程序中添加这对标签 这对标签有什么用呢 我创建了一个使用 apprequest 的应用程序 即使我没有在脚本前面添加这些标签 它也能正常工作 所以我真的很想知道为什么我们需要添加它们 谢谢 它是 Fa
  • 什么是影根

    在 Google Chrome 的开发者工具中 我看到 shadow root就在下面标签 它有什么作用以及用途是什么 我在 Firefox 和 IE 中都没有看到它 仅在 Chrome 中 这是一个特殊功能吗 如果我打开它 它会显示 an
  • Logback 依赖性阻止 SBT 离线运行

    这是一个细化的上一个问题 https stackoverflow com questions 23014492 sbt 0 13 1 offline更密切地归因于问题 我正在尝试确认我可以离线运行我的 SBT 项目 我可以 除非 logba
  • python 2.7中的karger最小切割算法

    这是我的 karger min cut 算法的代码 据我所知 我实现的算法是正确的 但我没有得到正确的答案 如果有人可以检查出了什么问题 我将不胜感激 import random from random import randint loa