等高线算法(C语言粗糙版) visualxyk 发表于 2007-6-8 14:19:00等高线算法用来在地图寻找最短路径与最优路径的算法.它通过像地图中的等高线一样从终点向四周扩散开来,一直扩散到开始点为止.则从开始点开始,沿着"高度"逐渐降低的路径,一直到最"低谷",就是从起点到终点的最短路径.它可以绕开障碍物,并且通过加权运算的话,可以考虑到各种地形的影响.源代码如下:#i nclude <stdio.h>#i nclude <stdlib.h>#define MAP_WIDTH 10#define MAP_HEIGHT 10#define MAP_SIZE (MAP_WIDTH * MAP_HEIGHT)int map_data[MAP_SIZE] = { 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,0,1,1,1,1, 1,1,1,1,1,0,1,1,1,1, 1,1,1,1,1,0,0,0,0,1, 1,1,0,1,1,0,1,1,1,1, 1,1,0,1,0,0,1,0,0,0, 1,1,0,1,0,1,1,1,1,1, 1,1,1,0,1,1,1,1,1,1, 1,1,1,0,1,1,1,1,1,1, 1,1,1,0,1,1,1,1,1,1};int temp_data[MAP_SIZE] = {0};void set_marker(int pos, int step_no, int target_pos);int get_path(int start_pos, int targetd_pos, int *path);int get_step(int pos);void set_marker(int pos, int step_no, int target_pos, bool &Found){ int up = pos - MAP_WIDTH, down = pos + MAP_WIDTH, left = pos - 1, right = pos + 1; if (up >= 0) if (map_data[up] != 0) if (temp_data[up] == 0 || temp_data[up] > step_no) { temp_data[up] = step_no; if (up == target_pos) Found = true; } if (down < MAP_SIZE) if (map_data[down] != 0) if (temp_data[down] == 0 || temp_data[down] > step_no) { temp_data[down] = step_no; if (down == target_pos) Found = true; } if (pos%MAP_WIDTH != 0) if (map_data[left] != 0) if (temp_data[left] == 0 || temp_data[down] > step_no) { temp_data[left] = step_no; if (left == target_pos) Found = true; } if (right%MAP_WIDTH != 0) if (map_data[right] != 0) if (temp_data[right] == 0 || temp_data[right] > step_no) { temp_data[right] = step_no; if (right == target_pos) Found = true; }}int get_step(int pos){ int temp_pos = pos - MAP_WIDTH; if (temp_pos >= 0) if (map_data[temp_pos] != 0) if (temp_data[temp_pos] != 0 && temp_data[temp_pos] < temp_data[pos]) return temp_pos; temp_pos = pos + MAP_WIDTH; if (temp_pos < MAP_SIZE) if (map_data[temp_pos] != 0) if (temp_data[temp_pos] != 0 && temp_data[temp_pos] < temp_data[pos]) return temp_pos; temp_pos = pos - 1; if (pos%MAP_WIDTH != 0) if (map_data[temp_pos] != 0) if (temp_data[temp_pos] != 0 && temp_data[temp_pos] < temp_data[pos]) return temp_pos; temp_pos = pos + 1; if (temp_pos%MAP_WIDTH != 0) if (map_data[temp_pos] != 0) if (temp_data[temp_pos] != 0 && temp_data[temp_pos] < temp_data[pos]) return temp_pos; return -1;}int get_path(int start_pos, int target_pos, int *path){ int index = 0; path[index] = get_step(start_pos); index++; while (true) { path[index] = get_step(path[index-1]); if (path[index] == target_pos) break; index++; } return ++index;} void show_map(){ int i, j; for (i=0; i<MAP_HEIGHT; i++) { for (j=0; j<MAP_WIDTH; j++) printf(" %02d", map_data[i * MAP_WIDTH + j]); printf("\n"); }}void show_temp(){ int i, j; for (i=0; i<MAP_HEIGHT; i++) { for (j=0; j<MAP_WIDTH; j++) printf(" %02d", temp_data[i * MAP_WIDTH + j]); printf("\n"); }}void main(){ printf("map data:\n"); show_map(); printf("\ntemp_data:\n"); show_temp(); int i, j, index; int step = 1; int start_pos = 11, end_pos = 88; temp_data[end_pos] = step; bool Found = false; do { for (i=0; i<MAP_HEIGHT; i++) for (j=0; j<MAP_WIDTH; j++) { index = i * MAP_WIDTH + j; if (temp_data[index] == step) set_marker(index, step+1, start_pos, Found); } step++; }while (!Found); printf("after setting markers...\n"); show_temp(); getchar(); int path[30]; int counter = get_path(start_pos, end_pos, path); for (i = 0; i<counter; i++) map_data[path] = 99; printf("The road is like that...\n"); show_map(); getchar();}这是第一个版本,在其中,设置标志部分用了强制的整张地图搜索,效率很低,可以用两个容器来解决上面问题.这将在下一个版本提到.
[人工智能与算法]等高线算法(C语言粗糙版)
来源:互联网 发布日期:2011-09-16 11:54:01 浏览:9246次
导读: 等高线算法(C语言粗糙版) visualxyk 发表于 2007-6-8 14:19:00等高线算法用来在地图寻找最短路径与最优路径的算法.它通过像地图中的等高线一样从终点向四周扩散开来,一直扩散到开始点为止.则从开始点开始,沿着高度逐渐降低的路径,一直到最低谷,就是从起点到...
下一篇:迷宫寻路与人工智能(一)
相关内容
- 不开颅将ChatGPT植入大脑? 盖茨投的AI硬件公司 挑战马斯克脑机接口
- 【EMNLP2024】阿里云人工智能平台PAI多篇论文入选EMNLP2024
- 2024年中国IT用户满意度调研结果公布
- 微信鸿蒙原生版拥有三种聊天记录迁移方式:暂不支持PC转移
- 科思科技:公司第一代智能无线通信基带芯片已进入商业化推广阶段
- TrendForce 发布 “2025 十大重点科技领域市场趋势预测”
- Sam Altman泄露新模型o2,太会整活了,营销鬼才
- 小鹏自研图灵AI芯片流片成功:一颗顶三颗英伟达Qrin X芯片
- 浙大团队提出新型形状记忆聚合物,无需依赖外部刺激即可实现复杂形状变化
- 台系厂商安霸的智驾芯片风口,终于来了
- 马斯克:脑机接口植入总体费用将在5000美元左右,手术仅10分钟
- 阿里云向量检索服务 Milvus 版正式商业化
- 解读2025年十大战略技术趋势,对话Gartner研究副总裁高挺
- OpenAI收购域名Chat.com,传金额超过1000万美元
- 外媒:AMD 全球裁员 4% 以加速 AI 芯片研发
- Python 成 GitHub 最受欢迎编程语言,AI 成主要推动力
- 引领AIGC新时代,畅享商业新未来,百度营销擎舵彰显“平台”独特价值
- 小鹏:未来 AI 汽车搭载至少 3 颗自研图灵芯片,已跑通智驾功能
- 苹果M5芯片明年见!全新iPad Pro有望同步推出
- 制程进入2纳米时代,半导体行业的计量与检测如何应对?
AiLab云推荐
最新资讯
- 脑机接口,从实验室到市场还有多远?
- TrendForce 发布 “2025 十大重点科技领域市场趋势预测”
- 科思科技:公司第一代智能无线通信基带芯片已进入商业化推广阶段
- AI 计算时代,为何Arm CPU依然是基石?
- 为开发AI芯片,传特斯拉已要求三星、SK海力士提供HBM4样片
- 英特尔演示资料显示未来将推 AI 芯片 Jaguar Shores
- AI 驱动的芯片设计-AI前沿讲习班(CAAI-AIDL)第十四期活动成功举办
- 台系厂商安霸的智驾芯片风口,终于来了
- 登上Nature的AI芯片设计屡遭质疑,谷歌发文反击,Jeff Dean:质疑者连预训练都没做
- 中国版脑机接口手术来了!比马斯克的更安全
本月热点
热门排行
-
存储芯片年涨七成不算完:AI需求接棒,大厂持续加注
阅读量:18036
-
美大选逼近!传大陆芯片设计业计划从台积电转单三星
阅读量:13772
-
黄仁勋对话扎克伯格:新款芯片样品本周发送,AI行业还有5年产品创新期
阅读量:12017
-
马斯克:Neuralink 今年预计完成 10 例脑机接口植入手术
阅读量:11857
-
应对先进封装挑战,芯碁微装直写光刻技术助力本土创新突破
阅读量:11516
-
黑芝麻智能登陆港交所:智能汽车AI芯片第一股,拥抱广阔机遇
阅读量:11389
推荐内容
- 2024山东国际玻璃工业技术展览会
- 第十六届中国绿色食品博览会暨江西茶业展
- 2024第20届中国(重庆)国际秋季茶产业博览会暨紫砂、陶瓷、茶具用品展(华巨臣茶博会)
- 2024第38届中国植保信息交流暨农药械交易会(中国植保双交会)暨2024丘陵山区农业机械 及设施农业展览会
- 2024第21届潍坊茶业博览会暨紫砂展
- 2024中国(东莞)国际包装印刷展览会
- 2024第四届成都国际乐器展览会
- 2024年法国巴黎农业机械展览会SIMA
- DronTechAsia2024亚洲(泰国曼谷)国际无人系统展
- 2024第21届中国(昆明)国际美业博览会(CKBE)
- 2024年第23届伊朗国际电力电工设备及技术展(全球六大电力展)