随机地图算法(优化地牢算法)
1.前言如果在阅读此篇文章的时候不了解地牢算法的建议去看一下这里不介绍地牢算法了只是谈论一下地牢算法不好的地方如何去扩展和优化地牢算法下面是地牢算法的链接https://www.cnblogs.com/sufferingStriver/p/8834862.html2.地牢算法缺点看过地牢算法以后现在提出几个需求比如必须要生成有n个房间的一个地图但是地牢算法会在计算的时候将不满足条件的房间去掉还有比如有一个要求有一些房间必须只有一个入口地牢算法在这个时候是没有办法搞定这种需求因为最小生成树是没有办法解决这种特殊的点所以需要想办法拓展一下。3.优化和拓展算法这里需要优化分散房间位置的算法最先想到的方法就是一个随机区域之内随机放n个房间如果和之前设置的房间位置碰撞了就重新随机这样的话怎么去判断随机区域大小如果随机区域直接最大之前不管多少房间这样一定不会重叠的但是这样指定不行房间密度会太散了一个房间到另外一个房间可能太远了这样指定不行所以怎么样可以判断最佳的随机区域大小第一个想法就是所有房间宽加起来就是随机区域的最大宽所有高加起来是就是随机区域的最大高如图所示但是这样的随机区域就是最佳吗这个最坏情况也是一定可以放下所有房间的可以看出来这个区域也太大了这样需要想办法优化这个随机区域大小于是经过一番思考可以这样优化随机区域的大小就是找到n房间中最大宽度值和最大高度值上面的图最大高度是3房间最大宽度是2房间如下图所示房间1放在(MaxWidth,MaxHeight),房间2,3放在(2*MaxWidth,2*MaxHeight),房间4,5,6放在(3*MaxWidth,3*MaxHeight),房间7,8,9,10放在(4*MaxWidth,4*MaxHeight),房间11,12,13,14,15放在(5*MaxWidth,5*MaxHeight)这样就算出现最坏情况也没有问题的慢慢增加随机区域为什么一定可以容下所有房间大家可以自己思考一下代码如下bool SetRandomRoom(int i, int MaxWidth, int MaxHeight,uint Count) { int x Random.Range(0, MaxWidth); int y Random.Range(0, MaxHeight); Rooms[i].SetLocation(x, y); if(Count 0x0fff)//栈溢出保护 return false; for (int j 0; j i - 1; j) { if (isOverLap(Rooms[i], Rooms[j]))//如果重叠 { SetRandomRoom(i, MaxWidth, MaxHeight, Count1); break; } } return true; } void SetMapPoint() { int i,j,k 0,k11,MaxHeight0,MaxWidth0,MaxWidthCell0,MaxHeightCell0; for (i 0; i Rooms.Count; i)//打散房间 { for (j i 1; j Rooms.Count; j) { if (Random.Range(0, 2) 1) SwapRoomInfo(i, j); } if (MaxWidthCell Room[i].Rect.Width) MaxWidthCell Room[i].Rect.Width; if (MaxHeightCell Room[i].Rect.Height) MaxHeightCell Room[i].Rect.Height; } for (i 0; i Room.Count; i) { if (k i)//控制房间密度 { k k k1; k1 k1 1; MaxWidth MaxWidth MaxWidthCell; MaxHeightCell MaxHeight MaxHeightCell; } if (SetRandomRoom(i, MaxWidth, MaxHeight, 0) false) { //TODO 防止意外(回滚所有随机) k 0;k1 1; MaxWidth MaxHeight 0; i 0; } } }这样就可以把房间位置散开而且比较密集。之后最小生成树连接这些点然后如何去添加只有单个入口的房间呢需要在这个最小生成树里用贪心算法去添加这些点随机这些特殊点(确保这些和之前的房间和路线碰撞)然后连接这些特殊点但是这里有一个问题因为随机函数的问题可能多次随机都有无法找到连接的路线这样的话尝试了一定次数之后这样我们需要遍历随机范围将将剩余的特殊点都连接进去。4.终结如果有更好的方法或者疑问大家可以留言讨论一下如果需要demo工程的小伙伴请大家留言一下~笔者会抽空用unity写一个demo出来提供下载。

相关新闻

异构无人机配送系统多目标优化算法解析与实践

异构无人机配送系统多目标优化算法解析与实践

1. 项目概述:异构无人机配送问题的研究背景与挑战 2024年发表在ESWA(Expert Systems With Applications)SCI一区TOP期刊的这篇论文,针对的是当前物流配送领域的一个前沿课题——异构无人机配送系统的多目标优化问题。随着无人机技…

2026/7/28 14:48:20 阅读更多 →
NBUT-2019-ICPC训练赛

NBUT-2019-ICPC训练赛

只写了几道能写的题,菜是原罪 A Mental rotation is a difficult thing to master. Mental rotation is the ability to imagine in your mind how an object would look like from a viewer’s side if you were to rotate it in a particular direction. It is so…

2026/7/28 14:48:20 阅读更多 →
Livewire 3构建高效Quiz系统的实战指南

Livewire 3构建高效Quiz系统的实战指南

1. 为什么选择Livewire 3构建Quiz系统? 去年接手一个在线教育项目时,我需要在两周内交付一个能支持千人并发的随堂测试模块。当时评估了三种方案:传统PHP表单提交、Vue前后端分离架构,以及当时刚发布不久的Livewire 3。最终选择Li…

2026/7/28 14:48:20 阅读更多 →

最新新闻

焊接缺陷如何分辨

焊接缺陷如何分辨

焊接缺陷如何分辨 一、 一般常见的焊接缺陷可分为四类: (1)焊缝尺寸不符合要求:如焊缝超高、超宽、过窄、高低差过大、焊缝过渡到母材不圆滑等。 (2)焊接表面缺陷:如咬边、焊瘤、内凹、满溢、未焊透、表面气孔、表面裂纹等。 (3)焊缝内部缺陷:如气孔、夹渣、裂纹…

2026/7/28 14:54:22 阅读更多 →
Play Integrity API Checker 技术架构深度解析:Android设备完整性验证实战指南

Play Integrity API Checker 技术架构深度解析:Android设备完整性验证实战指南

Play Integrity API Checker 技术架构深度解析:Android设备完整性验证实战指南 【免费下载链接】play-integrity-checker-app Get info about your Device Integrity through the Play Intergrity API 项目地址: https://gitcode.com/gh_mirrors/pl/play-integrit…

2026/7/28 14:54:22 阅读更多 →
深度学习框架到AI系统实战:佐治亚理工2025课程解析

深度学习框架到AI系统实战:佐治亚理工2025课程解析

为什么很多开发者学了深度学习框架,却依然写不出可靠的AI系统?为什么掌握了TensorFlow和PyTorch,面对真实业务场景时还是无从下手?问题的核心在于:缺少对经典AI算法的深度理解,以及将算法转化为可落地系统的工程能力。 佐治亚理工学院的人工智能课程正是为解决这一痛点而…

2026/7/28 14:54:22 阅读更多 →
终极指南:使用DDrawCompat在Windows 11上完美运行经典老游戏

终极指南:使用DDrawCompat在Windows 11上完美运行经典老游戏

终极指南:使用DDrawCompat在Windows 11上完美运行经典老游戏 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/…

2026/7/28 14:54:22 阅读更多 →
焊接理论知识

焊接理论知识

焊接理论知识 一、焊接的定义:焊接是通过对物体的加热,加压或者两者并用,使焊接连接处达到原子间力的相互作用,使分离的物体连接成一个新的整体的加工工艺。 二、焊接的方法分类:按照焊接过程中金属所处的状态和工艺特点可分为三类:熔化焊、压力焊、钎焊。 三、焊接过…

2026/7/28 14:54:21 阅读更多 →
NBM5100A与PIC18F86J16在物联网终端的低功耗设计实践

NBM5100A与PIC18F86J16在物联网终端的低功耗设计实践

1. NBM5100A与PIC18F86J16的协同设计背景 在物联网终端设备设计中,工程师们长期面临一个经典矛盾:传感器节点需要周期性发射无线信号(如LoRaWAN、NB-IoT),每次射频发射时会产生150mA以上的瞬时电流需求,但日…

2026/7/28 14:53:21 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻