最近在恶补各种知识,而且在寻找工作的过程中,也见识了好多面试题,开阔了自己的眼界。下面我来给大家分享下,我在解决问题过程中,用到的一个最小生成树算法。(写这个的原因有2个方面,1.首先,搜索关于最小生成树的部分,我没找到太多和Unity相关的知识,大部分是原理,所以,写个博客,强化一下自己的记忆。2.也方便大部分和我一样,找资料但是找不到太相关的文章,而抓瞎的人。当然,自己对最小生成树的算法理解,也相对浅显。欢迎各位大神指正。)
闲言少序,咱们直接进入正题。最近接到的需求是,在2D地图上,生成随机数个点,并通过最小路径,将他们连接起来,而且路径不能重复,不能相交。这就让我想到了算法里面的最小生成树的概念。至于具体概念,我就不在这里赘述了。具体的概念和相关代码可以查看这个文章。数据结构--最小生成树详解_William-CSDN博客_最小生成树
我主要讲讲我的实现方式吧。先贴代码,再逐行解释。
public struct tree
{
public int goIndex1;
public int goIndex2;
public float distance;
}
List<tree> gosDistance = new List<tree>();
//计算各特殊点之间的距离ÿ