lead/gcdata/mctest.ipynb
2025-05-15 22:00:38 +08:00

1381 lines
214 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"sys.path.append(\"../\")\n",
"from gcdata.gc import *\n",
"from gcdata.gc1 import *"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['DSJC0500.5.txt', 'DSJC1000.9.txt', 'DSJC0500.1.txt', 'DSJC0250.1.txt', 'DSJC0125.9.txt', 'DSJC0250.5.txt', 'DSJC0125.5.txt', 'DSJC0250.9.txt', 'DSJC0125.1.txt', 'DSJC1000.1.txt', 'DSJC0500.9.txt', 'DSJC1000.5.txt']\n"
]
}
],
"source": [
"import os\n",
"import numpy as np\n",
"import time\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# 获取gcdata目录下所有txt文件\n",
"data_dir = \"../\"\n",
"data_dir2 = \"../gcdata/\"\n",
"test_files = [f for f in os.listdir(data_dir2) if f.endswith('txt')]\n",
"print(test_files)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# 定义评估函数\n",
"def evaluate_coloring(coloring_func, adj_matrix):\n",
" \"\"\"评估图着色算法的性能\"\"\"\n",
" try:\n",
" # 计时并执行图着色\n",
" start_time = time.time()\n",
" colors = coloring_func(adj_matrix)\n",
" end_time = time.time()\n",
" execution_time = end_time - start_time\n",
" \n",
" # 检查解的合法性\n",
" n = len(adj_matrix)\n",
" for i in range(n):\n",
" for j in range(n):\n",
" if adj_matrix[i][j] == 1 and colors[i] == colors[j]:\n",
" print(f\"非法解:节点{i}和{j}相邻但颜色相同\")\n",
" return float('inf')\n",
" \n",
" # 计算使用的颜色数\n",
" num_colors = len(set(colors))\n",
" \n",
" print(f\"执行时间:{execution_time:.4f}秒, 使用颜色数:{num_colors}\")\n",
" return num_colors,execution_time\n",
" \n",
" except Exception as e:\n",
" print(f\"评估过程出错: {str(e)}\")\n",
" return float('inf')\n",
"\n",
"# 定义数据加载函数 \n",
"def load_graph_data(filename):\n",
" \"\"\"读取图着色问题数据\"\"\"\n",
" try:\n",
" filepath = os.path.join(data_dir2, filename)\n",
" with open(filepath, 'r') as f:\n",
" first_line = f.readline().strip().split()\n",
" n_vertices = int(first_line[0])\n",
" \n",
" adj_matrix = np.zeros((n_vertices, n_vertices), dtype=np.int32)\n",
" \n",
" for line in f:\n",
" v1, v2 = map(int, line.strip().split())\n",
" adj_matrix[v1][v2] = 1\n",
" adj_matrix[v2][v1] = 1\n",
" \n",
" return adj_matrix\n",
" \n",
" except Exception as e:\n",
" print(f\"读取数据出错: {str(e)}\")\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"测试实例: DSJC0500.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0579秒, 使用颜色数:68\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:18.2027秒, 使用颜色数:65\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0938秒, 使用颜色数:72\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.2781秒, 使用颜色数:65\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0417秒, 使用颜色数:72\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0708秒, 使用颜色数:71\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:13.6344秒, 使用颜色数:65\n",
"\n",
"测试实例: DSJC1000.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.2167秒, 使用颜色数:316\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:122.6014秒, 使用颜色数:299\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:1.1258秒, 使用颜色数:321\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.6846秒, 使用颜色数:299\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0872秒, 使用颜色数:321\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.4910秒, 使用颜色数:313\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:61.6497秒, 使用颜色数:299\n",
"\n",
"测试实例: DSJC0500.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0271秒, 使用颜色数:18\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:8.2985秒, 使用颜色数:16\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0060秒, 使用颜色数:20\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.0395秒, 使用颜色数:16\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0208秒, 使用颜色数:20\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0193秒, 使用颜色数:18\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:7.5141秒, 使用颜色数:16\n",
"\n",
"测试实例: DSJC0250.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0059秒, 使用颜色数:12\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:0.9747秒, 使用颜色数:10\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0015秒, 使用颜色数:13\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.0082秒, 使用颜色数:10\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0048秒, 使用颜色数:13\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0041秒, 使用颜色数:11\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.8288秒, 使用颜色数:10\n",
"\n",
"测试实例: DSJC0125.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0018秒, 使用颜色数:53\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:0.1796秒, 使用颜色数:51\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0047秒, 使用颜色数:56\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.0083秒, 使用颜色数:51\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0015秒, 使用颜色数:56\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0027秒, 使用颜色数:53\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.1214秒, 使用颜色数:51\n",
"\n",
"测试实例: DSJC0250.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0062秒, 使用颜色数:40\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:1.2001秒, 使用颜色数:37\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0080秒, 使用颜色数:43\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.0207秒, 使用颜色数:37\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0052秒, 使用颜色数:43\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0065秒, 使用颜色数:41\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.9142秒, 使用颜色数:37\n",
"\n",
"测试实例: DSJC0125.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0016秒, 使用颜色数:24\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:0.1555秒, 使用颜色数:22\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0018秒, 使用颜色数:26\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.0051秒, 使用颜色数:22\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0014秒, 使用颜色数:26\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0013秒, 使用颜色数:23\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.1308秒, 使用颜色数:22\n",
"\n",
"测试实例: DSJC0250.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0065秒, 使用颜色数:92\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:1.4176秒, 使用颜色数:92\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0281秒, 使用颜色数:99\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.0361秒, 使用颜色数:92\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0054秒, 使用颜色数:99\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0130秒, 使用颜色数:93\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.9777秒, 使用颜色数:92\n",
"\n",
"测试实例: DSJC0125.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0016秒, 使用颜色数:7\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:0.2009秒, 使用颜色数:6\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0006秒, 使用颜色数:8\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.0059秒, 使用颜色数:6\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0028秒, 使用颜色数:8\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0022秒, 使用颜色数:7\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.2098秒, 使用颜色数:6\n",
"\n",
"测试实例: DSJC1000.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.1945秒, 使用颜色数:29\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:67.5939秒, 使用颜色数:27\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.0318秒, 使用颜色数:31\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.1373秒, 使用颜色数:27\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0780秒, 使用颜色数:31\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0838秒, 使用颜色数:29\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:57.1171秒, 使用颜色数:27\n",
"\n",
"测试实例: DSJC0500.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0266秒, 使用颜色数:171\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:11.5300秒, 使用颜色数:170\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.1568秒, 使用颜色数:175\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.1534秒, 使用颜色数:170\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0220秒, 使用颜色数:175\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0806秒, 使用颜色数:169\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:7.5806秒, 使用颜色数:170\n",
"\n",
"测试实例: DSJC1000.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.1027秒, 使用颜色数:123\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:86.2889秒, 使用颜色数:115\n",
"\n",
"使用算法: MEoH-MCP\n",
"执行时间:0.2535秒, 使用颜色数:127\n",
"\n",
"使用算法: AAE-MCP\n",
"执行时间:0.3925秒, 使用颜色数:115\n",
"\n",
"使用算法: Greedy\n",
"执行时间:0.0824秒, 使用颜色数:127\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.1860秒, 使用颜色数:121\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:62.1337秒, 使用颜色数:115\n",
"\n",
"所有算法在各个实例上的表现:\n",
"\n",
"FunSearch-MCP:\n",
" DSJC0500.5.txt: 使用颜色数 = 68\n",
" DSJC1000.9.txt: 使用颜色数 = 316\n",
" DSJC0500.1.txt: 使用颜色数 = 18\n",
" DSJC0250.1.txt: 使用颜色数 = 12\n",
" DSJC0125.9.txt: 使用颜色数 = 53\n",
" DSJC0250.5.txt: 使用颜色数 = 40\n",
" DSJC0125.5.txt: 使用颜色数 = 24\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0125.1.txt: 使用颜色数 = 7\n",
" DSJC1000.1.txt: 使用颜色数 = 29\n",
" DSJC0500.9.txt: 使用颜色数 = 171\n",
" DSJC1000.5.txt: 使用颜色数 = 123\n",
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
"\n",
"EoH-MCP:\n",
" DSJC0500.5.txt: 使用颜色数 = 65\n",
" DSJC1000.9.txt: 使用颜色数 = 299\n",
" DSJC0500.1.txt: 使用颜色数 = 16\n",
" DSJC0250.1.txt: 使用颜色数 = 10\n",
" DSJC0125.9.txt: 使用颜色数 = 51\n",
" DSJC0250.5.txt: 使用颜色数 = 37\n",
" DSJC0125.5.txt: 使用颜色数 = 22\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0125.1.txt: 使用颜色数 = 6\n",
" DSJC1000.1.txt: 使用颜色数 = 27\n",
" DSJC0500.9.txt: 使用颜色数 = 170\n",
" DSJC1000.5.txt: 使用颜色数 = 115\n",
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
"\n",
"MEoH-MCP:\n",
" DSJC0500.5.txt: 使用颜色数 = 72\n",
" DSJC1000.9.txt: 使用颜色数 = 321\n",
" DSJC0500.1.txt: 使用颜色数 = 20\n",
" DSJC0250.1.txt: 使用颜色数 = 13\n",
" DSJC0125.9.txt: 使用颜色数 = 56\n",
" DSJC0250.5.txt: 使用颜色数 = 43\n",
" DSJC0125.5.txt: 使用颜色数 = 26\n",
" DSJC0250.9.txt: 使用颜色数 = 99\n",
" DSJC0125.1.txt: 使用颜色数 = 8\n",
" DSJC1000.1.txt: 使用颜色数 = 31\n",
" DSJC0500.9.txt: 使用颜色数 = 175\n",
" DSJC1000.5.txt: 使用颜色数 = 127\n",
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
"\n",
"AAE-MCP:\n",
" DSJC0500.5.txt: 使用颜色数 = 65\n",
" DSJC1000.9.txt: 使用颜色数 = 299\n",
" DSJC0500.1.txt: 使用颜色数 = 16\n",
" DSJC0250.1.txt: 使用颜色数 = 10\n",
" DSJC0125.9.txt: 使用颜色数 = 51\n",
" DSJC0250.5.txt: 使用颜色数 = 37\n",
" DSJC0125.5.txt: 使用颜色数 = 22\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0125.1.txt: 使用颜色数 = 6\n",
" DSJC1000.1.txt: 使用颜色数 = 27\n",
" DSJC0500.9.txt: 使用颜色数 = 170\n",
" DSJC1000.5.txt: 使用颜色数 = 115\n",
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
"\n",
"Greedy:\n",
" DSJC0500.5.txt: 使用颜色数 = 72\n",
" DSJC1000.9.txt: 使用颜色数 = 321\n",
" DSJC0500.1.txt: 使用颜色数 = 20\n",
" DSJC0250.1.txt: 使用颜色数 = 13\n",
" DSJC0125.9.txt: 使用颜色数 = 56\n",
" DSJC0250.5.txt: 使用颜色数 = 43\n",
" DSJC0125.5.txt: 使用颜色数 = 26\n",
" DSJC0250.9.txt: 使用颜色数 = 99\n",
" DSJC0125.1.txt: 使用颜色数 = 8\n",
" DSJC1000.1.txt: 使用颜色数 = 31\n",
" DSJC0500.9.txt: 使用颜色数 = 175\n",
" DSJC1000.5.txt: 使用颜色数 = 127\n",
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
"\n",
"Welsh-Powell:\n",
" DSJC0500.5.txt: 使用颜色数 = 71\n",
" DSJC1000.9.txt: 使用颜色数 = 313\n",
" DSJC0500.1.txt: 使用颜色数 = 18\n",
" DSJC0250.1.txt: 使用颜色数 = 11\n",
" DSJC0125.9.txt: 使用颜色数 = 53\n",
" DSJC0250.5.txt: 使用颜色数 = 41\n",
" DSJC0125.5.txt: 使用颜色数 = 23\n",
" DSJC0250.9.txt: 使用颜色数 = 93\n",
" DSJC0125.1.txt: 使用颜色数 = 7\n",
" DSJC1000.1.txt: 使用颜色数 = 29\n",
" DSJC0500.9.txt: 使用颜色数 = 169\n",
" DSJC1000.5.txt: 使用颜色数 = 121\n",
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
"\n",
"DSATUR:\n",
" DSJC0500.5.txt: 使用颜色数 = 65\n",
" DSJC1000.9.txt: 使用颜色数 = 299\n",
" DSJC0500.1.txt: 使用颜色数 = 16\n",
" DSJC0250.1.txt: 使用颜色数 = 10\n",
" DSJC0125.9.txt: 使用颜色数 = 51\n",
" DSJC0250.5.txt: 使用颜色数 = 37\n",
" DSJC0125.5.txt: 使用颜色数 = 22\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0125.1.txt: 使用颜色数 = 6\n",
" DSJC1000.1.txt: 使用颜色数 = 27\n",
" DSJC0500.9.txt: 使用颜色数 = 170\n",
" DSJC1000.5.txt: 使用颜色数 = 115\n",
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n"
]
}
],
"source": [
"# 用于存储每个算法在每个实例上的结果 \n",
"results = {}\n",
"results_time = {}\n",
"\n",
"# 遍历每个测试实例\n",
"for test_file in test_files:\n",
" print(f\"\\n测试实例: {test_file}\")\n",
" \n",
" # 加载数据\n",
" adj_matrix = load_graph_data(test_file)\n",
" if adj_matrix is None:\n",
" continue\n",
" \n",
" # 这里可以添加多个待评估的图着色算法\n",
" algorithms = {\n",
" \"FunSearch-MCP\": graph_coloring_v1,\n",
" \"EoH-MCP\": graph_coloring_v2, \n",
" # \"MCP-03\": graph_coloring_v3,\n",
" \"MEoH-MCP\": graph_coloring_meoh,\n",
" \"AAE-MCP\": graph_coloring_v5,\n",
" \"Greedy\": greedy_coloring,\n",
" \"Welsh-Powell\": welsh_powell_coloring,\n",
" \"DSATUR\": dsatur_coloring,\n",
" }\n",
" \n",
" # 评估每个算法\n",
" for alg_name, alg_func in algorithms.items():\n",
" print(f\"\\n使用算法: {alg_name}\")\n",
" score,etime = evaluate_coloring(alg_func, adj_matrix)\n",
" \n",
" if alg_name not in results:\n",
" results[alg_name] = {}\n",
" if alg_name not in results_time:\n",
" results_time[alg_name] = {}\n",
" results[alg_name][test_file] = score\n",
" results_time[alg_name][test_file] = etime\n",
"\n",
"# 打印总结果\n",
"print(\"\\n所有算法在各个实例上的表现:\")\n",
"for alg_name, scores in results.items():\n",
" print(f\"\\n{alg_name}:\")\n",
" for test_file, score in scores.items():\n",
" print(f\" {test_file}: 使用颜色数 = {score}\")\n",
" for test_file, etime in results_time.items():\n",
" print(f\" {test_file}: 执行时间 = {etime}\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"各算法在不同实例上的着色数量:\n",
" FunSearch-MCP EoH-MCP MEoH-MCP AAE-MCP Greedy Welsh-Powell \\\n",
"MCP0500.5 68 65 72 65 72 71 \n",
"MCP1000.9 316 299 321 299 321 313 \n",
"MCP0500.1 18 16 20 16 20 18 \n",
"MCP0250.1 12 10 13 10 13 11 \n",
"MCP0125.9 53 51 56 51 56 53 \n",
"MCP0250.5 40 37 43 37 43 41 \n",
"MCP0125.5 24 22 26 22 26 23 \n",
"MCP0250.9 92 92 99 92 99 93 \n",
"MCP0125.1 7 6 8 6 8 7 \n",
"MCP1000.1 29 27 31 27 31 29 \n",
"MCP0500.9 171 170 175 170 175 169 \n",
"MCP1000.5 123 115 127 115 127 121 \n",
"\n",
" DSATUR \n",
"MCP0500.5 65 \n",
"MCP1000.9 299 \n",
"MCP0500.1 16 \n",
"MCP0250.1 10 \n",
"MCP0125.9 51 \n",
"MCP0250.5 37 \n",
"MCP0125.5 22 \n",
"MCP0250.9 92 \n",
"MCP0125.1 6 \n",
"MCP1000.1 27 \n",
"MCP0500.9 170 \n",
"MCP1000.5 115 \n",
"\n",
"各算法在不同实例上的运行时间(秒):\n",
" FunSearch-MCP EoH-MCP MEoH-MCP AAE-MCP Greedy Welsh-Powell \\\n",
"MCP0500.5 0.0579 18.2027 0.0938 0.2781 0.0417 0.0708 \n",
"MCP1000.9 0.2167 122.6014 1.1258 0.6846 0.0872 0.4910 \n",
"MCP0500.1 0.0271 8.2985 0.0060 0.0395 0.0208 0.0193 \n",
"MCP0250.1 0.0059 0.9747 0.0015 0.0082 0.0048 0.0041 \n",
"MCP0125.9 0.0018 0.1796 0.0047 0.0083 0.0015 0.0027 \n",
"MCP0250.5 0.0062 1.2001 0.0080 0.0207 0.0052 0.0065 \n",
"MCP0125.5 0.0016 0.1555 0.0018 0.0051 0.0014 0.0013 \n",
"MCP0250.9 0.0065 1.4176 0.0281 0.0361 0.0054 0.0130 \n",
"MCP0125.1 0.0016 0.2009 0.0006 0.0059 0.0028 0.0022 \n",
"MCP1000.1 0.1945 67.5939 0.0318 0.1373 0.0780 0.0838 \n",
"MCP0500.9 0.0266 11.5300 0.1568 0.1534 0.0220 0.0806 \n",
"MCP1000.5 0.1027 86.2889 0.2535 0.3925 0.0824 0.1860 \n",
"\n",
" DSATUR \n",
"MCP0500.5 13.6344 \n",
"MCP1000.9 61.6497 \n",
"MCP0500.1 7.5141 \n",
"MCP0250.1 0.8288 \n",
"MCP0125.9 0.1214 \n",
"MCP0250.5 0.9142 \n",
"MCP0125.5 0.1308 \n",
"MCP0250.9 0.9777 \n",
"MCP0125.1 0.2098 \n",
"MCP1000.1 57.1171 \n",
"MCP0500.9 7.5806 \n",
"MCP1000.5 62.1337 \n"
]
}
],
"source": [
"# 将结果整理成表格\n",
"import pandas as pd\n",
"\n",
"# 准备性能数据\n",
"data_colors = {}\n",
"for test_file in test_files:\n",
" # 去掉.txt后缀,将DSJC替换为MCP\n",
" instance_name = test_file.replace('.txt', '').replace('DSJC', 'MCP')\n",
" data_colors[instance_name] = {}\n",
" for alg_name in results:\n",
" if test_file in results[alg_name]:\n",
" data_colors[instance_name][alg_name] = results[alg_name][test_file]\n",
"\n",
"# 准备运行时间数据 \n",
"data_time = {}\n",
"for test_file in test_files:\n",
" instance_name = test_file.replace('.txt', '').replace('DSJC', 'MCP')\n",
" data_time[instance_name] = {}\n",
" for alg_name in results_time:\n",
" if test_file in results_time[alg_name]:\n",
" data_time[instance_name][alg_name] = round(results_time[alg_name][test_file], 4)\n",
"\n",
"# 转换为DataFrame\n",
"df_colors = pd.DataFrame(data_colors).T\n",
"df_time = pd.DataFrame(data_time).T\n",
"\n",
"# 打印结果表格\n",
"print(\"\\n各算法在不同实例上的着色数量:\")\n",
"print(df_colors)\n",
"print(\"\\n各算法在不同实例上的运行时间(秒):\")\n",
"print(df_time)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n"
]
},
{
"data": {
"image/png": "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yIzt26FtW4iNTXns6Z+P8BiPxcamlNu+PXvizKCQkBA0TTOZeBgfpQoICEh13DivIDo6mmHDhlG0aFGcnZ2pXr06a9asSVX2/v37XL58mapVq6ZJKiBlf4WWLVuafCxr7969tG/fnnz58uHs7Ey5cuUYPXo0Mf9I6BISEpgzZw4tW7akePHiODs7U6BAAd58803+/PPPNO0uXrwYTdNYvHgxmzdvpkmTJnh6eqaaK5GQkMDs2bOpV68enp6eeHh4ULlyZYYNG8ajR4/StJmR9+J5IyMWQgghhBDWevw4ZaRCKTAY0i9rMICdXUr5mzdzzGNRtpKYmMgbb7xBWFgYb775JjExMaxcuZKuXbuybds23njjDQC8vb2xt7fnzp07REdH4+7unqH2v/vuO9577z18fX1p3749+fPn548//mDy5MkEBwcTHByMk5MTAGFhYXz00Uc0adKENm3a4Ovry5UrV9i4cSNbt25l79691K1bN00fP//8Mzt27KBdu3a89957REZGAhAXF0fLli3Zu3cv5cqVo3///jg7O3Px4kW+++47+vbti6+vr8XvxfNGEgshhBBCCGstWZLy+FNGJxobDCnlf/wRPvwwa2NLx6VLl0yOSLRq1crqNm/fvk3dunVT3eD37NmT1157jRkzZug3087OzrRv354NGzbQuHFjBg4cSMOGDalcuTKOjo4m2z579iyDBw+mZs2a7Nq1izx58ujnpk6dysiRI5kzZw7//ve/AfD19eXvv/+maNGiqdo5c+YMDRo0YNSoUezcuTNNP1u3bmXHjh289tprqY6PHTuWvXv30qdPHxYtWpTqMa3w8PA0j21l9L147ijxVOHh4QpQ4eHh2R2KEEIIIawQGxurzp49q2JjY23XqMGgVJkySmma8WGnjL00LaWewWC7WDLo6tWrCjD7mjlzpgoODlaACgoKMlu/X79+qY77+fkpQF25ciVNHT8/P5UnT55Uxx48eKDatm2bqm8nJyfVsGFDNXv2bBUTE5Oq/IcffqgAtW/fvjTtJycnq/z586vatWtn6D1o3769cnJyUgkJCfqxRYsWKUB17tw5TfmkpCTl5eWlvL29VVhY2FPbt/S9yC4Z/Z2w5D5YRiyEEEIIIazx8GHq1Z8ySqmUemFhkDev7ePKgJYtW7Jt2zaT50JCQqxq08fHh1KlSqU5XqxYMQ4c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PLF0OCUqNDRUHieCipZSqURAQAAWLlyIV1991dLhEBERlWplro2FJbCNBRERERGVR8ZcBxfJE4snT54gPDwcUVFRSE9PZ+NGIiIiIqJyxqwnFrm5uZg1axb++9//Ijs7W56el5cn/5yQkIDq1asjPT0dkZGRqFSpknkRWwCfWBARERFReVRivUKFhIRg+fLlyM7ORv369WFjo/kAxMPDAyNGjEB2djZ2795tzuqIiIiIiKiUMjmx2Lp1K3bv3g0fHx9cuHABV69ehaenp9ayISEhAIDffvvN1NUREREREVEpZnJiERoaCkmSsGTJkkJ7WgoODoYkSfjrr79MXR0REREREZViJicWly5dAgAMGjSo0LIODg5wc3NDXFycqasjIiIiIqJSzOTEIikpCW5ubnBwcDCovFKpNHVVRERERERUypmcWHh4eCApKQmZmZmFlo2JiUFycjJ8fHxMXR0REREREZViJicWjRs3BgAcPXq00LIrV64EALRs2dLU1RERERERUSlmcmIxfPhwCCEwZ84cpKen6ywXFhaGxYsXQ5IkjB492tTVERERERFRKWbyyNtjxozB999/j/Pnz6N169aYOnUqcnJyAEDufnbLli04dOgQhBDo0qUL+vTpU2SBExERERFR6WHWyNuPHz9Gnz59cOHCBUiSpLWMEAItW7bEnj17dI5zUdpx5G0iIiIiKo9KbORtHx8fnDx5Et988w0aNWoESZIghJA/devWxfLly3H06NEym1QQEREREVHhzHpi8azU1FTExsYiLy8Pvr6+cHd3L6pFWxSfWBARERFReWTMdbDJbSy0cXZ2Ro0aNYpykUREREREVAaY9SoUERERERERYMYTi/v37xtV3t7eHu7u7lAoFKaukoiIiIiISimTE4uqVauaVK9atWp46aWX8Prrr/O1KSIiIiKi54TJr0IV7P3JmM+dO3fw7bffonHjxvj555+LcluIiIiIiMhCTE4sIiMjERYWBg8PD3h7e2POnDk4dOgQbt68ib///huHDh3CnDlzUKFCBXh6emLbtm24dOkSVq5cibp16yIjIwNjxozB7du3i3J7iIiIiIjIAkzubvbOnTto3rw5qlatij/++ANeXl5ay8XHx6Nbt264f/8+Ll68iMDAQGRlZaFTp044e/Ys/vOf/+Cbb74xayOKG7ubJSIiIqLyqEQGyPvk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veXlent7C19fX/kzcOBAuWzBY/RZBb+XH374QVhZWQlJkjSOoffee08IIcTcuXPl7+fZMt99953OeOfOnSskSZLLOjo6CoVCIf+/UqVK4tKlSwZvv4pSqRReXl4CgNi8ebPOchMmTFCL1dnZWTg6OqpN0/b7debMGeHr6yuXsba2Vvt9lSRJfPrpp1rXmZaWJkJCQtTW4eLiIuzs7OT/N27cWKPekSNH1I59R0dH4eTkJP/fw8NDHD9+XKNeZGSkXOa3334TPj4+cv2C63R1dRWXL1/WGvPFixeFh4eHzvPR1q1bde6vAwcOqK2n4LGu+mj7HVOpXr26ACD++9//6ixDZAlMLIhKoY0bNwoAokaNGmrT27VrJwCIJUuWaNR56aWXBAAxdOhQncudOHGiACDat2+vNj0rK0u0aNFCABAvvPCC2LNnj0hLSxNCCJGamip+/PFH+Q/vm2++qbFc1cWes7OzqFixotixY4fIzs4WQggRHR0tL+vMmTNixIgRYs+ePSI2NlYolUohhBDx8fHiq6++ki9uv/rqK411JCQkiEqVKgkAolq1auLw4cNy/XPnzonGjRur/ZF/9g+5udtYGEP3QVElFh4eHkKhUIhly5aJpKQkIYQQT548EZMmTZL3waFDhzTqqxIDDw8P4ebmJtatWyfS09PlOPv27StfDEdEROisry+x8PDwEH5+fmLXrl3yPrh586Zo1aqVvI8SExM16vfs2VO+QFuzZo3IzMwUQghx//59MXToUKFQKOQLXGMSCyHULyS1XRSrGJJYqC70X3/9dfH48WMhRP4xrPpurKysxOLFi4W1tbVYuHChvK0PHjyQt9HJyUnrPvjyyy/li+rPPvtMPHz4UAghRG5urrhw4YLo3LmzACCqVKkiUlJSjNoH165dk7ftzp07WsscP35cbRvi4+PleU+ePBH79+8XY8eOFf/++69avcjISPnCePDgweLixYsiJydHCJGfMM6ZM0fY2NgIAGLnzp0a6x0yZIi83lmzZono6GghRH4yFBMTIzZt2iSmTJmiVuf+/fvyOuvVqydOnDghzzt27JioXbu2ACA8PT1FTEyMRrwFk482bdqI8+fPCyGEyMnJEX/88Yd8vmnXrp1GvMnJySIgIEAAEAEBAeLAgQPy+ej06dOifv36aonCs8dcjRo1BADRvXt38ddff8nTMzIy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",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"图片尺寸: 2400 x 1800 像素\n",
"FunSearch: (0.05, 79.42)\n",
"EoH: (26.55, 75.83)\n",
"MEoH: (0.14, 82.58)\n",
"AAE: (0.15, 75.83)\n",
"Greedy: (0.03, 82.58)\n",
"Welsh-Powell: (0.08, 79.08)\n",
"DSATUR: (17.73, 75.83)\n"
]
}
],
"source": [
"# 计算每个算法的平均性能和平均时间\n",
"avg_colors = df_colors.mean()\n",
"avg_times = df_time.mean()\n",
"\n",
"# # 中文显示\n",
"# plt.rcParams['font.sans-serif'] = ['SimHei']\n",
"# plt.rcParams['axes.unicode_minus'] = False\n",
"\n",
"# 创建散点图\n",
"plt.figure(figsize=(8, 6))\n",
"\n",
"# 设置坐标轴范围\n",
"x_max = max(avg_times) * 1.05 # 扩大20%\n",
"y_max = max(avg_colors) * 1.05\n",
"x_min = min(avg_times) * 0.99\n",
"y_min = min(avg_colors) * 0.99\n",
"plt.xlim(-5, 45)\n",
"plt.ylim(y_min, 84)\n",
"\n",
"# 定义不同算法的颜色和标记,确保数量足够\n",
"colors = ['red', 'blue', 'green', 'purple', 'orange', 'brown', 'pink', 'gray', 'olive', 'cyan']\n",
"markers = ['o', 's', '^', 'D', 'v', '<', '>', 'p', 'h', '8']\n",
"\n",
"# 绘制散点和标注\n",
"for i, alg in enumerate(avg_colors.index):\n",
" x = avg_times[alg]\n",
" y = avg_colors[alg]\n",
" # 替换算法名称\n",
" display_name = alg.replace('EoH-MCP', 'EoH').replace('FunSearch-MCP', 'FunSearch').replace('AAE-MCP', 'AAE').replace('MEoH-MCP', 'MEoH')\n",
" plt.scatter(x, y,\n",
" color=colors[i % len(colors)], # 使用取模确保不会越界\n",
" marker=markers[i % len(markers)],\n",
" s=100,\n",
" label=display_name)\n",
" # 为DA和EOH设置不同的标注位置\n",
" if alg in ['DSATUR']:\n",
" xytext = (-90, 20) # 左上方偏移\n",
" elif alg in ['EoH-MCP']:\n",
" xytext = (20, 20)\n",
" elif alg in ['Greedy']:\n",
" xytext = (0, -20)\n",
" elif alg in ['MEoH-MCP']:\n",
" xytext = (0, 20)\n",
" elif alg in ['FunSearch-MCP']:\n",
" xytext = (-40, 20)\n",
" else:\n",
" xytext = (20, -5) # 右上方偏移\n",
" \n",
" plt.annotate(f'({x:.2f}, {y:.2f})',\n",
" xy=(x, y),\n",
" xytext=xytext,\n",
" textcoords='offset points',\n",
" fontsize=18,\n",
" bbox=dict(facecolor='white', edgecolor='none', alpha=0.7))\n",
"\n",
"plt.xlabel('Average running time (seconds)', fontsize=18)\n",
"plt.ylabel('Average color number', fontsize=18)\n",
"\n",
"# 设置刻度字体大小\n",
"plt.xticks(fontsize=14)\n",
"plt.yticks(fontsize=14)\n",
"\n",
"# 添加图例\n",
"plt.legend(fontsize=14, loc='upper right')\n",
"\n",
"plt.tight_layout()\n",
"plt.savefig('mcppareto.png',dpi=300)\n",
"plt.show()\n",
"\n",
"# 输出这张图片的精准大小\n",
"import os\n",
"import matplotlib.pyplot as plt\n",
"from PIL import Image\n",
"# 打开图片\n",
"image_path = 'mcppareto.png'\n",
"image = Image.open(image_path)\n",
"# 获取图片的尺寸\n",
"width, height = image.size\n",
"# 输出图片的尺寸\n",
"print(f\"图片尺寸: {width} x {height} 像素\")\n",
"# 关闭图片\n",
"image.close()\n",
"\n",
"# 输出上面绘图中每个散点的名称以及两个分别的指标值\n",
"for i, alg in enumerate(avg_colors.index):\n",
" x = avg_times[alg]\n",
" y = avg_colors[alg]\n",
" # 替换算法名称\n",
" display_name = alg.replace('EoH-MCP', 'EoH').replace('FunSearch-MCP', 'FunSearch').replace('AAE-MCP', 'AAE').replace('MEoH-MCP', 'MEoH')\n",
" print(f\"{display_name}: ({x:.2f}, {y:.2f})\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"每个实例的基本信息:\n",
" 测试实例 顶点数 边数 密度 平均度数\n",
"0 DSJC0125.1.txt 125 736 0.094968 11.776\n",
"1 DSJC0125.5.txt 125 3891 0.502065 62.256\n",
"2 DSJC0125.9.txt 125 6961 0.898194 111.376\n",
"3 DSJC0250.1.txt 250 3218 0.103390 25.744\n",
"4 DSJC0250.5.txt 250 15668 0.503390 125.344\n",
"5 DSJC0250.9.txt 250 27897 0.896289 223.176\n",
"6 DSJC0500.1.txt 500 12458 0.099864 49.832\n",
"7 DSJC0500.5.txt 500 62624 0.501996 250.496\n",
"8 DSJC0500.9.txt 500 112437 0.901299 449.748\n",
"9 DSJC1000.1.txt 1000 49629 0.099357 99.258\n",
"10 DSJC1000.5.txt 1000 249826 0.500152 499.652\n",
"11 DSJC1000.9.txt 1000 449449 0.899798 898.898\n"
]
}
],
"source": [
"# 统计每个实例的基本信息\n",
"instance_info = []\n",
"\n",
"for test_file in test_files:\n",
" adj_matrix = load_graph_data(test_file)\n",
" if adj_matrix is None:\n",
" continue\n",
" \n",
" n_vertices = adj_matrix.shape[0]\n",
" n_edges = np.sum(adj_matrix) // 2 # 无向图的边数\n",
" density = n_edges / (n_vertices * (n_vertices - 1) / 2) # 图的密度\n",
" avg_degree = np.sum(adj_matrix) / n_vertices # 平均度数\n",
" \n",
" instance_info.append({\n",
" '测试实例': test_file,\n",
" '顶点数': n_vertices,\n",
" '边数': n_edges,\n",
" '密度': density,\n",
" '平均度数': avg_degree\n",
" })\n",
"\n",
"# 将统计信息转换为DataFrame并打印\n",
"df_info = pd.DataFrame(instance_info)\n",
"print(\"\\n每个实例的基本信息:\")\n",
"print(df_info)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzMAAAJrCAYAAADUAc2YAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAALZ9JREFUeJzt3QvUXWVh5//f+yYhEMCKghgItajVKkFKuXobL+MSrR3UdiqJICJax1uZ0fHSNTpOdeyM2E6rFqw6/EUUBfyP06qDqON46fyVa1TkohQvRUNAAbFykZDL+1/POW8qYsJO8u5zzn7O/nzWOovFgezzELLevb/nefazZ+bm5uYCAABQmdlJDwAAAGBniBkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqJGYAAIAqiRkAAKBKYgYAAKiSmAEAAKokZgAAgCqJGQAAoEpiBgAAqJKYAQAAqiRmAACAKokZAACgSmIGAACokpgBAACqtHjSA+i6ubnku99N1qxJLrssueSS5Nprk5//PNmwIdlll2TZsuTgg5PDDx++Djss2X//ZGZm0qMHGI8Nd27Ijd+4MevWrMsNa27I9ZdcnztvujMb128c/PPFSxdn2T7Lsv+R+2f5Ycuz32H75cG//eAsWbZk0kMHoGIzc3Plcp17u/nm5Mwzk9NOS37wg+F7S5YMA2ZrSrgsWpRsHJ63B3FzyinJ6tXJ7ruPb9wA41JOH9dffH0uPf3SXHneldm8YXMyk8wums3mjZu3+mtmF89m86bNyVwyu2Q2K49bmSNedcQgcmZ8AwTADhIz93LVVcmppybnnpts2pRs3vr5uNHs7PDX7rFH8uIXJ699bbJiRdujBRi/uc1zufxDl+fCv7wwP77ix8NA2Ua8NNnya/d9zL45+tVH55ATD8nMrKgBYPuImXllxuXtb0/e+tbh32+ZYWlDmbHZbbfk3e9OTjrJ8jOgXj/5zk/ytyf+bdZeuHZ41+VOfuHzK+aPteJxK/Lcs56bBzz8AS0dGIBpJmaSfPObyQtekFxxxfAemVE65pjkjDPM0gD1zcZc/NcX5/Nv+HzmNs3t9EzM9szUzCyaydNOfVqO+uOjzNIAcJ96HzMf/WjywhcOI6YsKxu1xYuHszSf/nTyhCeM/vMA2ri5/7zfPy/f/ex3x/q5D3vGw3Lcx4+zSQAA29TrmHnf+5KXv3z0szFbu5+mbCbwyU8mT3/6eD8bYEes/9n6nP2Mswc3+pfZmXEqszL7H7V/TvjMCVl6v6Vj/WwA6tDbmPnQh4YzMpNSgqbM0nz+88kTnzi5cQBsy4afb8jZTz87P7zwh4OlZZNQlpwd8LgDcsJnT8iS3czQAPDLevnQzC99KXnRiyY7hrLTWdlk4JnPHD7HBqBLyvdcf/fCv8sPvzq5kBmMY9NcfviVHw7GAgDpe8zcfvvwZv8uKEGzfv1whmhnt4AGGIWrPnZVrv5/rx770rKtKWMoYyljAoBex8zrXpesW9edeCizM1/5SvKe90x6JABDd/z4jpz/svMHD8DsjJnkf73sfw3GBgC9jJkvfCF573u7EzL3jizLzYAuKNGw/rb1yeQnZX5hbrgZwfkvP3/SIwGgQ3oTM2Wbg9e8ZnjjfReVGZo3v3nSowD6bu1Fa/Ptv/32RO+T2ZYypm/9z28NxggARUcv7dt36aXJ5Zd3c1ZmS8x87GPJTTdNeiRAn116+qWDB1d2VRnbpe+5dNLDAKAjunvGatnppw+3Qu6yElof+MCkRwH01Z0335krz70ymzdu7u7PyY2bB2MsYwWAXsTMzTcn55wznP3oesycdlqyadOkRwL00df+n691Yvey7Vlu9vUPfH3SwwCgA3oRM+efn2zYkCqsXZusWTPpUQB9dNW5V9URM5vncuU5V056GAB0QC9i5rLLkiWtPjj6R0n+IMmeSXZL8qwkN7Zy5JmZ4XgBxmnT3Zvy4yt/PJpjZ1Pel/fli/lia8f88VU/HowZgH7rRcxcfHGbMzNz8yFzSZK3JfmvSS5MckIrR1+0yMwMMH4lZEZ1r8xX89XckBtaPebmDZsHQQNAv3X8lviFK/fJfPObbR7xfyf5RpKrk/z6/HtlduZlSW5NsteCx3vRRa0MFGC7rVuzbiTHvSk35Uv5UpZmaevHvmHNDVl+6PLWjwtAPaY+Zr7//WT9+jaPeNT8rMyWkCkeOP/Xdr7VvOaa4WYAXX0mDjCdMzOzS2YHMx5t2ZzN+UQ+kYNyUP4p/5Q2lbH+6Iqy5BeAPpv6y+Xbbmv7iL+W5NH3eu+CJI+4R9QsTNnNrN0AA7hvd99293AVbYsuykWDiHlmnpnWzSV33353+8cFoCpTPzNz112j/oTvJPlwkne3etTvf//G7LVX93cVAqbDbbfe1upOZrfklsEN/3+YP8xug6W47Zqbm8vGn3d8v30ARm7qY2a0D8osyzFOTvJbSV7c6pHPPvvMLF3qW0dgTL43v79JC+Yyl0/mk4PlZY8YzFqPxqIli0Z2bADqMPUxs1v7Xwjew6nz989cnKTVvZ/zsped1PJ20gDb9vff+ftcc/U1mdu48KK5JJfk1tya1VmdUZmZncmiXcUMQN9NfcwccMCojvyFJP8xybuSHNLqkffZJ/n1X7dDDzA+y39rea6Zu6aVY12dq/Oz/Cxvz9t/6f3rcl2+nC/nT/OnC/6MsiTu/g+5/4KPA0Ddpj5m7n//5CEPSa67rs2jlm2Z/3WS5yV5ZZsHHuxgdlTZMA1gjPY7fL/MbWpnndmxOTZ355eXyZZlZ/tlvxyew1v5jDLWMmYA+m3qY6Y4+uhk7drhLmELt2E+ZJbMP1vmsnv8s0cm2XPBMXN4O+d6gO2232HthcEDt7Kz4y7ZJXtkjyxPe7POyw8zgw3Qd1O/NXNx2GFl55u2jnZlkm+VpzIkeVKSI+7xWrPgo5eHZpbxAozTsr2XZY/le6QWe+63Z5Y9cNmkhwHAhPViZubJTx4+hLIdh7a35c82dl977GNHdniAbXro0x6aK8+5Mps3tvfgzC1elBe1dqzZxbODsQJAL2ZmyrKtxzxmuISry0rIHHdc8sB2nr0JsEMOf/nhIwmZtpUxlrECQMcv79sxM5OcckqbszOjUZaYveIVkx4F0Fcrjl6RB618ULfPDLPJgw5+UPY/av9JjwSADujyKatVq1cne+zR7eA66CBLzIDJmZmZyZGnHDl8HnBXbU6OOuWowVgBoDcxs2xZ8u/+XXeXmpUNCv7DfxhGDcCkHPz8g7P7vrsPHkrZNWVMZWwrV6+c9FAA6IiOXtqPxhvfmDzsYcmijj00uoznmc8czh4BTNIuu++SZ3/g2YOHUnZNGdOzz3z2YIwA0LuY2XXX5Oyzu3XvTJmJ2W235L//d7MyQDf85u/+Zg554SGZWdSdH0plLL990m/nN5/5m5MeCgAd0quYKY48Mnn967sTDmV52WmnJfu7lxXokGe88xmDZ890YblZGUMZyzF/dcykhwJAx/QuZoq3vCV56lO7sNxsLi99aXLiiZMeB8Av2/X+u2bV363Kol0WTTZoZjIYQxlLGRMApO8xs3Rp8olPDJ8/M7mgmctjHnN13vCG6zozSwRw762aV39q9WCJ1ySCZvCZM8nep+ydfQ/bd+yfD0D39TJmit13Tz7/+eSJT5zMDmcnnTSXV7/6azn33I/kuuuuG/8AALbDQ5/20Jzw2ROyaOmisd5DUz6rfOYxHzkmt/zaLTnnnHOyYcOGsX0+AHXobcwU5bkzF1zwiwdVjnqWZvHi4evUU5MPfGA2xx+/KitWrMhHPiJogO468CkH5uSvnJwHPPwBg5mSkZvJ4LNe/NUX5+hVR+f444/P2rVrBQ0Av2Jmbq7cgs6Xvzy8d2Xt2tHsdlaWkh16aPLhDyePfvQv3i8n5nKCLifqcsJ+yEMe0v6HA7Rg4/qN+fJbv5yvvP0rg+CY29Tu6WMw8zOXPP5PHp8nvflJWbx08T//s/KFT/nip3wBtHr16ixZsqTVzwagTmLmHu64Y/jgyve8Zxg0C42asnytHKMsaXvTm5LXvnY4M3NvggaoybrL1uWTL/lkfnT5jzK7eDabNy7sh+WWY+x7yL459oxjs9/h+2313xM0ANybmNmKm25KzjxzuGXyD3+YlPPl9q5sKDMwZbnaxo3JypXJKackz3/+MGjui6ABalJOHWsvWptLT780V5131fAhmzswW7NlFqbc5L9y1coc8cojsv9R+2emYUcUQQPAPYmZ+7BpU/K5zw1fF1+cfP3ryV13bfvfv9/9kiOOGL6OPTY5+ugde56NoAFqdMdNd+TKc6/M9RddPwicW79/6yBUtmom2evAvQY7pe1/9P6DkNl9n4Zve+5F0ACwhZjZwbj5h39IvvOdZN26W/PZz34xz3jGU7JixV551KOS3/iNhT+MU9AAtVv/s/W58fIbc+fNd2bjzzcO3lu82+LBgy8f/NsPztI9ly74MwQNAIWY2Uk33HBD3v/+9+elL31pli9f3uqxBQ1AM0EDQK+3Zu6qckIuJ2bbNgNsW/mix7bNAP0mZjpK0AA0EzQA/SZmOkzQADQTNAD9JWY6TtAANBM0AP0kZiogaACaCRqA/hEzlRA0AM0EDUC/iJmKCBqAZoIGoD/ETGUEDUAzQQPQD2KmQoIGoJmgAZh+YqZSggagmaABmG5ipmKCBqCZoAGYXmKmcoIGoJmgAZhOYmYKCBqAZoIGYPqImSkhaACaCRqA6SJmpoigAWgmaACmh5iZMoIGoJmgAZgOYmYKCRqAZoIGoH5iZkoJGoBmggagbmJmigkagGaCBqBeYmbKCRqAZoIGoE5ipgcEDUAzQQNQHzHTE4IGoJmgAaiLmOkRQQPQTNAA1EPM9IygAWgmaADqIGZ6SNAANBM0AN0nZnpK0AA0EzQA3SZmekzQADQTNADdJWZ6TtAANBM0AN0kZhA0ANtB0AB0j5hhQNAANBM0AN0iZvhnggagmaAB6A4xwy8RNADNBA1AN4gZfoWgAWgmaAAmT8ywVYIGoJmgAZgsMcM2CRqAZoIGYHLEDPdJ0AA0EzQAkyFmaCRoAJoJGoDxEzNsF0ED0EzQAIyXmGG7CRqAZoIGYHzEDDtE0AA0EzQA4yFm2GGCBqCZoAEYPTHDThE0AM0EDcBoiRl2mqABaCZoAEZHzLAgggagmaABGA0xw4IJGoBmggagfWKGVggagGaCBqBdYobWCBqAZoIGoD1ihlYJGoBmggagHWKG1gkagGaCBmDhxAwjIWgAmgkagIURM4yMoAFoJmgAdp6YYaQEDUAzQQOwc8QMIydoAJoJGoAdJ2YYC0ED0EzQAOwYMcPYCBqAZoIGYPuJGcZK0AA0EzQA20fMMHaCBqCZoAFoJmaYCEED0EzQANw3McPECBqAZoIGYNvEDBMlaACaCRqArRMzTJygAWgmaAB+lZihEwQNQDNBA/DLxAydIWgAmgkagF8QM3SKoAFoJmgAhsQMnSNoAJoJGgAxQ0cJGoBmggboOzFDZwkagGaCBugzMUOnCRqAZoIG6CsxQ+cJGoBmggboIzFDFQQNQDNBA/SNmKEaggagmaAB+kTMUBVBA9BM0AB9IWaojqABaCZogD4QM1RJ0AA0EzTAtBMzVEvQADQTNMA0EzNUTdAANBM0wLQSM1RP0AA0EzTANBIzTAVBA9BM0ADTRswwNQQNQDNBA0wTMcNUETQAzQQNMC3EDFNH0AA0EzTANBAzTCVBA9BM0AC1EzNMLUED0EzQADUTM0w1QQPQTNAAtRIzTD1BA9BM0AA1EjP0gqABaCZogNqIGXpD0AA0EzRATcQMvSJoAJoJGqAWYobeETQAzQQNUAMxQy8JGoBmggboOjFDbwkagGaCBugyMUOvCRqAZoIG6CoxQ+8JGoBmggboIjEDggZguwgaoGvEDMwTNADNBA3QJWIG7kHQADQTNEBXiBm4F0ED0EzQAF0gZmArBA1AM0EDTJqYgW0QNADNBA0wSWIG7oOgAWgmaIBJETPQQNAANBM0wCSIGdgOggagmaABxk3MwHYSNADNBA0wTmIGdoCgAWgmaIBxETOwgwQNQDNBA4yDmIGdIGgAmgkaYNTEDOwkQQPQTNAAoyRmYAEEDUAzQQOMipiBBRI0AM0EDTAKYgZaIGgAmgkaoG1iBloiaACaCRqgTWIGWiRoAJoJGqAtYgZaJmgAmgkaoA1iBkZA0AA0EzTAQokZGBFBA9BM0AALIWZghAQNQDNBA+wsMQMjJmgAmgkaYGeIGRgDQQPQTNAAO0rMwJgIGoBmggbYEWIGxkjQADQTNMD2EjMwZoIGoJmgAbaHmIEJEDQAzQQN0ETMwIQIGoBmgga4L2IGJkjQADQTNMC2iBmYMEED0EzQAFsjZqADBA1AM0ED3JuYgY4QNADNBA1wT2IGOkTQADQTNMAWYgY6RtAANBM0QCFmoIMEDUAzQQOIGegoQQPQTNBAv4kZ6DBBA9BM0EB/iRnoOEED0EzQQD+JGaiAoAFoJmigf8QMVELQADQTNNAvYgYqImgAmgka6A8xA5URNADNBA30g5iBCgkagGaCBqafmIFKCRqAZoIGppuYgYoJGoBmggaml5iBygkagGaCBqaTmIEpIGgAmgkamD5iBqaEoAFoJmhguogZmCKCBqCZoIHpIWZgyggagGaCBqaDmIEpJGgAmgkaqJ+YgSklaACaCRqom5iBKSZoAJoJGqiXmIEpJ2gAmgkaqJOYgR4QNADNBA3UR8xATwgagGaCBuoiZqBHBA1AM0ED9RAz0DOCBqCZoIE6iBnoIUED0EzQQPeJGegpQQPQTNBAt4kZ6DFBA9BM0EB3iRnoOUED0EzQQDeJGUDQAGwHQQPdI2aAAUED0EzQQLeIGeCfCRqAZoIGukPMAL9E0AA0EzTQDWIG+BWCBqCZoIHJEzPAVgkagGaCBiZLzADbJGgAmgkamBwxA9wnQQPQTNDAZIgZoJGgAWgmaGD8xAywXQQNQDNBA+MlZoDtJmgAmgkaGB8xA+wQQQPQTNDAeIgZYIcJGoBmggZGT8wAO0XQADQTNDBaYgbYaYIGoJmggdERM8CCCBqAZoIGRkPMAAsmaACaCRpon5gBWiFoAJoJGmiXmAFaI2gAmgkaaI+YAVolaACaCRpoh5gBWidoAJoJGlg4MQOMhKABaCZoYGHEDDAyggagmaCBnSdmgJESNADNBA3sHDEDjJygAWgmaGDHiRlgLAQNQDNBAztGzABjI2gAmgka2H5iBhgrQQPQTNDA9hEzwNgJGoBmggaaiRlgIgQNQDNBA/dNzAATI2gAmgka2DYxA0yUoAFoJmhg68QMMHGCBqCZoIFfJWaAThA0AM0EDfwyMQN0hqABaCZo4BfEDNApggagmaCBITEDdI6gAWgmaEDMAB0laACaCRr6TswAnSVoAJoJGvpMzACdJmgAmgka+krMAJ0naACaCRr6SMwAVRA0AM0EDX0jZoBqCBqAZoKGPhEzQFUEDUAzQUNfiBmgOoIGoJmgoQ/EDFAlQQPQTNAw7cQMUC1BA9BM0DDNxAxQNUED0EzQMK3EDFA9QQPQTNAwjcQMMBUEDUAzQcO0ETPA1BA0AM0EDdNEzABTRdAANBM0TAsxA0wdQQPQTNAwDcQMMJUEDUAzQUPtxAwwtQQNQDNBQ83EDDDVBA1AM0FDrcQMMPUEDUAzQUONxAzQC4IGoJmgoTZiBugNQQPQTNBQEzED9IqgAWgmaKiFmAF6R9AANBM01EDMAL0kaACaCRq6TswAvSVoAJoJGrpMzAC9JmgAmgkaukrMAL0naACaCRq6SMwACBqA7SJo6BoxAzBP0AA0EzR0iZgBuAdBA9BM0NAVYgbgXgQNQDNBQxeIGYCtEDQAzQQNkyZmALZB0AA0EzRMkpgBuA+CBqCZoGFSxAxAA0ED0EzQMAliBmA7CBqAZoKGcRMzANtJ0AA0EzSMk5gB2AGCBqCZoGFcxAzADhI0AM0EDeMgZgB2gqABaCZoGDUxA7CTBA1AM0HDKIkZgAUQNADNBA2jImYAFkjQADQTNIyCmAFogaABaCZoaJuYAWiJoAFoJmhok5gBaJGgAWgmaGiLmAFomaABaCZoaIOYARgBQQPQTNCwUGIGYEQEDUAzQcNCiBmAERI0AM0EDTtLzACMmKABaCZo2BliBmAMBA1AM0HDjhIzAGMiaACaCRp2hJgBGCNBA9BM0LC9xAzAmAkagGaChu0hZgAmQNAANBM0NBEzABMiaACaCRrui5gBmCBBA9BM0LAtYgZgwgQNQDNBw9aIGYAOEDQAzQQN9yZmADpC0AA0EzTck5gB6BBBA9BM0LCFmAHoGEED0EzQUIgZgA4SNADNBA1iBqCjBA1AM0HTb2IGoMMEDUAzQdNfYgag4wQNQDNB009iBqACggagmaDpHzEDUAlBA9BM0PSLmAGoiKABaCZo+kPMAFRG0AA0EzT9IGYAKiRoAJoJmuknZgAqJWgAmgma6SZmAComaACaCZrpJWYAKidoAJoJmukkZgCmgKABaCZopo+YAZgSggagmaCZLmIGYIoIGoBmgmZ6iBmAKSNoAJoJmukgZgCmkKABaCZo6idmAKaUoAFoJmjqJmYAppigAWgmaOolZgCmnKABaCZo6iRmAHpA0AA0EzT1ETMAPSFoAJoJmrqIGYAeETQAzQRNPcQMQM8IGoBmgqYOYgaghwQNQDNB030zc3Nzc5MeRDU2bUquuSb57ndz6/XX50uf+1yefMwx2WvFiuRRj0oOPDCZmZn0KAG2WzkxlxN0OVGXE3Y5cS/Uz9b/LJffeHluuvOm3LXxrsF7uy7eNfss2yeHPPiQ3G/p/VoYOcD4lC98yhc/5Qug8kVQ+UJoYcrl9/eTfCvJHUnWJ9klybIkD0vyyCSLWhr9dBMzTfHy2c8mn/tccsklyde/ntw1PDFv1Z57JkccMXwde2zy2MeKG2Dqg+amO27KOVeek4vWXjR4ff+n5QS9bQfe/8AcveLowWv1ytXZZ/d9FvhfAND1oCmX2xcm+WSSS+dft93Hv79rkkOTHJnkmCRPFzfbIGa25qabkg98IDnttGTt2rIeo5ztt+/XlnhZtCjZuDE56KDklFOS5z8/2WOPUY8aYGxBU04dF669MKdfeno+dtXHsnluc2Yyk01zm7br8xbNLMpc5jI7M5vjDjourzzilYO4mfEFEDBVQXN7ko8meXeSq5IsLt+Wz8fN9ijHL9egByR5VZKTk+zdwn/J9BAz93T77ckb35i85z3J5s3D10JsOSkvW5a86U3Ja1+bLC5/iAHqDZpLr780f/SpP8rlP7o8i2cXZ+PmjQv63C3HOGTfQ3LGsWfk8P0OX9DxACYfNOXn4l8keVuSO+ffm2vhVvfyekWS/5Jk9wUebzqImS2+9KXkxBOT669feMRsK2wOPTT58IeTRz+6/eMDjDho1m9cn7d8+S059Sun7tAszPbaMlvzJ4//k7z5SW/O0sVLWz0+wHiCpszAnJjk6y0EzNaUoFmR5ENJnpS+EzPlHpjXvW64pKwsDyv3yYzKllmZt70tef3r3U8DVBM0X7/h61n18VW59pZrB8ExSiWUHvHAR+ScPzgnhy4va8YBagiacp33jiRvmo+YEV5TDu6fKccvS8/+fP4em37qd8yUZWW/93vJ//2/o5mNuS8nn5y8//3DgALocNAc+NQD8+L/8+Lcvenu1mdj7muWZpdFu+T855+fpxz4lLF8JsDOBs0BB+yX44//UmZnzxrzCGaT/Iskn0rSz/uz+xszJWSe9rTksstGOxuzLWVW5rjjkrPPFjRAZ4PmTR94U/7ixrLuO9mc8X7pUzYHKFHz6eM/nac99Glj/WyA7XXddd/L7bc/J49+9BUTWnSzKEm51/D/9PI+mn7GzPr1ybOeNbxPZhIhs0X5E/9Hf5S8972WnAGdU7ZZfsoHn5L1m9aPfGnZfQVNmaH54gu/ONjtDKBbys/Gl2Vu7v0TvpQrQfPkJOcn6df9hmVuqn/+039KvvCFyYZMUTqyLDX7ULmBC6A7fnrXT/Psc5+duzffPbGQKcqWz2V523POfc5gTADdUpaVTTpkinJN+4Ukf5q+6d/MzMUXDx9m2ZX/7PKnf/fdk29/O9l//0mPBmDgpL87KWd/8+yx3SPTpCw3e8EhL8iZzz5z0kMBmHd9kt9KcseIdi3bGTNlXn3+YZv9MNu7nctOOCGZ7dB/domqn/98uNysK4EF9Nqnr/10zrr8rM6ETFHG8sFvfDAXXHvBpIcCMB8vLykXlx0KmaJc454wP65+6NBV/Rj82Z8l3/ve5JeX3VsZzwUXJOecM+mRAD13x9135ORPnDy4V6Vryphe9IkXDcYIMFkfTfKZ+YdjdsmmJN8tF73pi+6drUbljjuSd75z/Fsw78hysxJbZmeACfroFR/Nj+740eBela4pYypjO+dKX/wAk1Su1f7L/JKuLtqc5F1J7kwf9Cdmzj13uB1zV5WIufrq5MILJz0SoKfKLZTvvuTdme3wqaGM7V0Xv2swVoDJ+GqSqzu2vOzebisXv+mD7p6x2lROeu96V7fuldmaxYuT97xn0qMAerwV85U/vnLsz5PZEWVsZYwXX3/xpIcC9Fa5Vlucbpudn53pcnC1o+NX9y0pD8a84oruLjHbYuPG5LzzkltumfRIgB76m8v+Jotnu36CzmCMZawA41eu0T7WwXtl7q1c834zyZpMu37ETHk4ZouzMuWPx39M8uAkZTPld7cdNJaaARPw+e99Phs3t3yC/s78l4MtKmMsYwWYzBKzdn9OlkcfvuQlyapVwwU65VKwHbPlIjjTrh8xs2bN8Ab7lpTHEf15kjcm+esk/znJeW0uNSvjBRijm++8OTfcfkO7B/1xko/PfwPUsnW3rcstd5rFBsatXKO1N4NdNrJ91rOG37kvX5684Q3Ji17U1tFnejEz0/31BG246KLWtmP+2XzIvDXJH8+/99P5vz+ujQ8oS+HKsjiAMVqzruUT3tokZyd5wPzz5EZgzQ1r8vSHPX00BwfYqktb+4amPP7wlFOS009PTj55+N7v/E5y0knD9+53v4V+wqb5B2hOt+mfmfnpT5PrrmvtcF+ZfwzR8fd47znze1qsaytmLnZjKzBel627LItmFrV3wPJj95gkR2QkyljLmAHG65LWYqY8M/1tb0te+MJfvLdixfBScMOGVj4iyT8m+adMs+mPmR/+sNXDXT//RWO5V2aL8ve/Nr80vBU33dTmn2KARj/4px9kpsXluHlskkMz0gdoXvfT9r6oAmhWrs1ubu1oe+2V/Jt/kyya/x5p/frhIxGf8ITkgQ9s9Sd8ptn0LzMr2dvm4ZLcfyvv71EapMXPufEf/zFze5SjAozeT277SbvPbpkd/QM0b73t1txwQ8v3+QBsw8zMbXlw2f1pBN761uSMM5Jddx3uW9WuuzLNpj9m2tsSYmBpWd6wlffL95ltZtNZZ5yRu5Yta/GIANv27Xy708+X2VrMfOvab+X9175/0kMBemLXXe8c3KA/Cocfnnz728n/+B/JRz6SvO51bR59Q6bZ9MdMSdwWPWh+qdm9/STJ7i1+zoll3nG33Vo8IsC2fetL3xrEwaa5djZLGbWyzGzlI1bmpU966aSHAvTGnUneMZIj/+7vDl9HHpm85jXDbZoPOKCto++WaTb9MbPnnq0e7pD5P8pfKztOzL/3rfn39mvrQxYtyvLf+I1Wn40DcF/2vf++g0CoKWYe9GsPyvKylynAWJTZ63Jt1s4sdrk9et265CEP+cV7z3528upXJ9dc02bM7JFpNv1XywcemCxd2t7h5iPm7fd4rzwPbq8kh7X1IY98pJABxmrlg1Zmw+Z6liKUsR6878GTHgbQK+Xa7JGtHa08I71c8t1zr6prrx3+tXyn3Y5dkzw002z6Z2bKQygf85jk0rIveDv+Ikl5ssFT5ifuLkjyl239ZpbxHn10G0cC2G6H7dfa1zFjc9jy+sYM1K5co5XiWPg92WXXsoMPTp75zOEWzWVDybLE7F/9q+ThD29zTdGiTLN+fP1/1FHJkiWtHa5EzN/PbwZQnj99RpJXt3Xw8nDPw5yggfHPzCyeref7rSWzS3LQgw6a9DCA3inXaO0sxy2LcD75yWHQlIdmvvzlybHHJh/9aGs/KZMcmWlXz5lroVtEnHZaq4csj1D4TEagbI1axgswRrss2mUQNN+48RvtHvjQ0TxvpoRMGTPAeJVrtPa2sS+3/Z1zTkZkQ5s3QXRWP2ZmnvWsVmdmRqo8+tXMDDABqw5aNbixvuvKGFevXD3pYQC9jZl7Pjq9y3ZJ8nuZdt0/a7Vh772T1auH96N0WZlvfNWrfvEoWIAxevHvvDiLZrr/86eM8eRDT570MIBeKj8jX1XBJfTiJM9P8sBMu67/n2jPK1/Z+gM0RxIzZdEkwATsvWzvHLfyuE7fO1PGtmrlqsFYASbj5AouoTcmeUX6oOv/J9pzxBHJIYd0d8vjMmv0vOcl++wz6ZEAPfbKI16ZjZu7+8VPGdsrjujHCRroqvII9ed1+Nbz2fldzI5IH3T0yn4Eyn53f/mXyeZ2HnQ0kph561snPQqg545ecXSe+1vP7eRyszKm33/U7w/GCDBZb+1wzGyef2hIP/QnZoqnPjV52cu6OTvz53+ePOxhkx4FQN77e+/Nnkv3zExm0hVlLPdber/8zbP+ZtJDAUhSrtneke6ZTfLyctGbvpiZmyt7AffI7bcnj3pUsm5dN2Zptjwk88tf7mZkAb103pXnZdXHV6VLzvvX5+V5B5WlHQBdUK4j/0WSi1t5iObCzc7vtHZ1kj3SF/27et5jj+TDH04nlHhZujT54AeFDNApJRr+8NF/2ImtmssYyliEDNAt5efjWfOPUZ/8z8qhD/UqZNKh3/nxevKTkzPPnOwYSryUWZkLLrC8DOicmZmZnPWcs/K4Ax430ftnymc//oDH50PPLSdogK4p13Cfnr9/ZtKX1SWsnpy+mfTv+uSceGLyvvcNNwaYRMiUh3h+6lPJE584/s8H2A67Ldkt5z///By5/5ETmaEpn3nUiqMGY9h18a5j/3yA7VOWmn0qSXlA+7h/Vs7Mv96X5IT0Uf/umbm3c84Zhk35bdi0afSfV2Zjdtst+fSnkyc8YfSfB7BAd264M39w3h/kM9/9zFg/9xkPe0Y+ftzHs2zJsrF+LsDO+f+S/G6Sn4/pHpoya15Cpsxcr05f9XdmZovVq5M1a5KDDhrPLM2//JfJ1VcLGaAaJSbOP/78vPOYd2bpoqUjfajm4pnFg8941zPeNfhMIQPU4wnzN9+PYyexcs26MsnXeh0yhZmZLTZsSE49NXnLW4Z/v7HFol60aDgb8+53JyedNJmlbQAt+M5PvpMX/u0L89W1X81sZrN5sJvPwm051uNWPC5nPfesPPwBD2/luADjVy6tP5jkj5PclaTNlT9bvkz60ySvn1/a1m9i5t6uuip5xzuGy8/KsrOd3b653BdTfm3ZPe0lL0n+/b9PVqxoe7QAY7d5bnM+dPmH8lcX/VW++aNvDmZqNm7euS+Atvzax+z7mLzm6NfkBYe8oBM7qAEs3Nok/y3JGeXZIPMLonb2C6DZ+WVlz0/yuiQHtTzWeomZbbnlluGOZ3/918kPfjB8r9y0X2ZwtqbMtpQZmC0zOgcfnPzbf5usWpXsvvv4xg0wJuX0ccn1l+T0S0/PuVeemw2bNwwebrlodtE246bEy6bNmzKXuSyZXZJVK1flVUe+Kkfsd8RgBzWA6XNHknOTvCvJFfeYYSkzNtu6DC8zLluuOX99fpbnRUkeOKYx10PMNCm/Pd/73vC+mssuSy65JPmHf0juumsYNiVwSqyUeDn88OHrsMOS/ctDiwD6s0nA5TdenjU3rBm8Ll57cW6+8+bctbEsschgN7K9l+092J3ssOWHDV6HPPgQ98QAPXN9kjVJLpt/XTEfOxvmA6bs3PiIJEcmOTzJYUkeOn+PDFsjZgAAgCpZmAwAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAFRJzAAAAFUSMwAAQJXEDAAAUCUxAwAAVEnMAAAAVRIzAABAlcQMAABQJTEDAABUScwAAABVEjMAAECVxAwAAFAlMQMAAKRG/z9FpgiwwhZwfQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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AABQJBcmAwAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAAUaL/DzNA2fo2fTFIAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import networkx as nx\n",
"import matplotlib.font_manager as fm\n",
"\n",
"# 设置中文字体\n",
"plt.rcParams['font.sans-serif'] = ['SimHei']\n",
"plt.rcParams['axes.unicode_minus'] = False\n",
"\n",
"# 定义节点位置和边\n",
"positions = [(0,0), (1,0), (0,1), (2,0), (1,1)] # 5个节点的位置\n",
"edges = [(0,1), (0,2), (1,2), (1,3), (2,4), (3,4)] # 节点间的连接\n",
"\n",
"# 创建图对象\n",
"G = nx.Graph()\n",
"G.add_nodes_from(range(len(positions)))\n",
"G.add_edges_from(edges)\n",
"pos = {i: positions[i] for i in range(len(positions))}\n",
"\n",
"# 绘制第一个图\n",
"plt.figure(figsize=(8, 6))\n",
"colors = ['red', 'green', 'blue', 'yellow', 'purple']\n",
"nx.draw(G, pos,\n",
" node_color=colors,\n",
" node_size=1000,\n",
" with_labels=True,\n",
" font_size=12,\n",
" font_weight='bold',\n",
" edge_color='gray',\n",
" width=1)\n",
"\n",
"# plt.title('5色着色方案', fontsize=18, fontweight='bold')\n",
"plt.axis('equal')\n",
"plt.savefig('./plot/5color.png',dpi=300)\n",
"plt.show()\n",
"\n",
"# 绘制第二个图\n",
"plt.figure(figsize=(8, 6))\n",
"colors2 = ['red', 'green', 'blue', 'blue', 'red']\n",
"nx.draw(G, pos,\n",
" node_color=colors2,\n",
" node_size=1000,\n",
" with_labels=True,\n",
" font_size=12,\n",
" font_weight='bold',\n",
" edge_color='gray',\n",
" width=1)\n",
"\n",
"# plt.title('3色着色方案', fontsize=18, fontweight='bold')\n",
"plt.axis('equal')\n",
"plt.savefig('./plot/3color.png',dpi=300)\n",
"plt.show()\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "lead",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 2
}