前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >遗传算法可视化项目(3):创建图的数据结构

遗传算法可视化项目(3):创建图的数据结构

作者头像
不可言诉的深渊
发布2019-07-26 16:51:04
7220
发布2019-07-26 16:51:04
举报
文章被收录于专栏:Python机器学习算法说书人

昨天有点事停更了一天,非常抱歉!继续遗传算法可视化项目,之前文章没看的或者今天才关注的点历史消息或者这里:

遗传算法可视化项目(1):概述

遗传算法可视化项目(2):获取信息

好了,该进入今天的工作了,创建图的数据结构,图的定义(主要是二元组和三元组两种定义)和存储结构多了去了,这里也就不一一介绍了,我认为图的定义也就是用来描述物件与物件之间关系,我用的是邻接矩阵的存储结构,图的存储结构当然还有邻接表,十字链表……

先打开VS2017(开始菜单里面找),然后文件→新建→项目,然后点击visualC++ → Windows控制台应用程序,修改名称和项目路径,其余默认,点击确定等待片刻,等待完成之后在那个给你生成的.cpp文件(这个cpp文件以后用不到(因为最终要运行的是Python程序,而不是C程序),但是如果想要调试函数的可以在这里面的main函数里面调用)最上面写上#include<stdlib.h>然后在main函数里面写这两行代码:

system("pause");

return 0;

接着就是在右边的解决方案资源管理器中找到并右击头文件,添加→新建项,点击头文件,修改一下文件名,然后确定,我这里头文件就叫Graph.h了,Graph.h第一行应该会有一个#pragma once的预处理,表示让Graph.h只被编译一次,不会因为重复的包含而去重复的编译,不要删掉!在第二行开始写自己的代码。首先,把之前生成的那个文本文件(海南省所有镇的经纬度.txt)复制到现在的项目中,和Graph.h一个目录就行,然后用VS编写Graph.h。首先定义图的存储结构邻接矩阵,代码如下:

#define ROW 106表示图中有106个结点(视自己情况而定,我以前在学校就爬出来106个点,然后回到家重新爬一次发现没有106个点,我也不清楚是为什么,具体怎么爬看之前的推送。这个不用管,那个文本文件(海南省所有镇的经纬度.txt)有多少行ROW就是多少),最后我还定义了一个Graph类型的全局变量,为什么要定义这个全局变量是因为和Python交互时使用,如果局部变量函数一结束就直接回收了,我以后还要把图的数据传给Python。定义完事之后就是把图创建出来了,定义函数如下(在函数上面需要加一些头文件和宏定义

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#define MAX 10

):

首先是在create函数体里面定义变量并初始化,代码如下:

然后就是打开文件(海南省所有镇的经纬度.txt),把文件内容读到内存中,以后方便处理,代码如下:

我在这里就是把文件内容存放到char*类型的str的变量中,然后就是字符串分割,代码如下:

这样就把str整个字符串分成了ROW行3列的char*类型的二维数组,二维数组是变量strArray,然后利用atof函数把经纬度从char*类型转变为double类型,存入图中,代码如下:

节点已经初始化完毕,然后就是初始化边,代码如下:

初始状态节点与节点并没有来连通,以后我会把最短路径连上,MAX是一个无穷大的数,我在这里定义成了10,为什么我会定义成10明天再说,今天差不多就到这里,最后不要忘了关闭文件释放资源!关闭文件释放资源的代码如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档