江苏高速道路整合
来源:互联网 发布:软件可靠性测试内容 编辑:程序博客网 时间:2024/04/27 22:23
江苏省道路整合
江苏省高速公路师兄说大约有100来条的样子,然后他们刚开始分成小路段有14000+个路段,设计算法将其中的10000+合并了,还剩下3600+条道路需要合并。
1.MATLAB初选
我当时先采取了用matlab对其进行一些数据处理,在这个过程中,对各项数据都搞清楚了,毕竟是别人的数据,并不是别人一说就那么好理解的东西。用matlab构造出一些自己想要的数据。
然后对这个问题有所理解,当时对问题进行了梳理,然后抽象成如下的问题:
10000 个[x,y]对,其中x是集合A中的元素;y是集合B中的元素;A是B的子集。 如果某个[x,y]对与另一个[x,y]对中有元素相同,那么我们认为这两个对中的任何元素是可以相互表示的。 找出所有可以相互表示的元素集合。
这就是一个图找出所有连通分量的问题。
2.c++实现一个图找出所有连通分量
#include <iostream>#include <fstream>#include <vector>#include <cstring>using namespace std;const int M = 188719;const int MAXN = 30000;vector<int> v[MAXN+1];bool visited[MAXN+1];bool have[MAXN+1];void dfs(int x){ ofstream cout("out.txt", iostream::app); cout<<" "<<x-M; visited[x] = true; int sz = v[x].size(); for(int i=0; i!=sz; ++i) if(!visited[v[x][i]]) dfs(v[x][i]);}int main(){ ifstream cin("data.txt"); ofstream cout("out.txt", iostream::app); memset(have, 0, sizeof(have)); int x, y; while(cin>>x>>y) { have[x+M] = have[y+M] = true; if(x!=y) { v[x+M].push_back(y+M); v[y+M].push_back(x+M); } } memset(visited, 0, sizeof(visited)); for(int i=1; i<=MAXN; ++i) { if(!visited[i]&&have[i]) { cout<<"\nnew set:"<<endl; dfs(i); } } return 0;}
这个算法成功将3400+条道路合并到1000+道路。然而,目标是100左右。
3.josm+sublime text
1000多条道路怎么办呢?由于信息缺失,需要对照高德地图来进行拼接合并,所以使用josm进行暴力合并。
1 0
- 江苏高速道路整合
- 江苏地区何处有卖道路护栏?
- 高速单行道 IN Name Id”:道路入口有一辆车请求进入
- 道路
- 道路
- 道路
- 1-通向架构师的道路之Apache整合Tomcat
- 江苏部分
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 通向架构师的道路(第二十三天)maven与ant的奇妙整合
- 通向架构师的道路(第二十三天)maven与ant的奇妙整合 --转载
- WCF Ajax Json的应用
- 解析XML的几种方法之SAX解析(一)
- 1025. PAT Ranking (25)
- 牛腩新闻发布系统(一)——Web 服务器被配置为不列出此目录的内容
- 除法表达式-最大公约数
- 江苏高速道路整合
- linux shell命令快捷获得系统帮助(一)[man-pages定义规范]
- ModelSim Verilog仿真实例
- CentOS简介
- Hdoj 2141 Can you find it ?
- WINDOWS重叠IO模型
- Android5.0以上系统的移动网络开关
- HDU-1551-Cable master
- iOS设计模式之观察者模式