Questions tagged «algorithm»

算法用于计算,数据处理和自动推理。更准确地说,算法是一种有效方法,表示为用于计算函数的定义明确的指令的有限列表。

6
解决无返途能力的迷宫
我需要编写一个解决迷宫的程序。迷宫具有图结构,其中每个节点-一些房间和边缘-出口到其他房间: 规格: 我们从一个随机的房间开始。 迷宫有死角,出口为0或很少。 我们对所有迷宫一无所知,只知道当前房间的数量和其中的门列表。 当我们进入新房间时,我们不知道我们来自哪里(当前房间的哪扇门将我们引回到先前的房间)。 我们可以识别何时到达出口。 我们从当前房间移到每个房间的任何可用步骤。 例如,如果我们在6号房间,我们就不能跳楼开始。就像机器人运动一样。 我们确切知道当前房间的ID。我们知道当前房间(并非在所有迷宫中)每个门的ID。 我们控制机器人。 我查看了所有已知的算法,但是它们都至少需要其他功能才能返回上一个房间。根据规范,我们不能使用任何搜索最短路径的算法(实际上,我不需要最短路径),因为我们只知道当前房间。我们不能使用左手(右手)跟随算法,因为不知道出口的方向。可能唯一符合规格的解决方案是在每个房间选择随机退出,以期能找到一些退出时间。 有什么建议如何以更聪明的方式解决这种迷宫?
11 algorithm  maze 

1
三角剖分A *(TA *)寻路算法
我需要帮助来了解Demyen在他的论文《基于有效三角剖分的寻路》(第76-81页)中描述的Triangle A *(TA *)算法。 他描述了如何使常规A *算法适用于三角剖分,甚至在到达/扩展最终节点之后也可以搜索其他可能更理想的路径。当最终节点展开时,常规A *停止,但是在三角图中使用时,这并不总是最佳路径。这正是我遇到的问题。 第78页的图5.4中说明了此问题: 我了解如何计算论文中介绍的g和h值(第80页)。 而且我认为搜索停止条件是: if (currentNode.fCost > shortestDistanceFound) { // stop break; } 其中,currentNode是从打开列表(优先级队列)中弹出的搜索节点,其f得分最低。shortestDistanceFound是到目前为止找到的最短路径的实际距离。 但是,如何从以后的搜索中排除以前找到的路径?因为如果再次进行搜索,显然会找到相同的路径。我是否要重置已关闭的列表?我需要修改某些内容,但是我不知道需要更改什么。该论文缺少伪代码,因此会有所帮助。

2
在曲线上应用笔划时如何避免自相交?
我的代码中有几个Spline2D对象,每个对象都有一个Position,Velocity和Acceleration方法,该方法在特定时间返回指定数量的向量。我一直在使用这些向量来构造几何图形以创建曲线的渐变笔触,但是我在陡峭曲线处的自相交方面遇到了问题。例如,这是发生这种情况的一条曲线: 线框:http : //twitpic.com/2zplw1/full 填充:http : //twitpic.com/2zpmnt/full 如您所见,在第二个弯曲处,内部相交,这导致了丑陋的伪影。在不引起自相交的情况下,是否有很好的算法/方法可以绘制曲线? 编辑:更多极端的例子,再加上我想要实现的模型: 线框:http : //twitpic.com/2ztwzi/full 填充:http : //twitpic.com/2ztwkt/full 理想结果(模拟):http : //twitpic.com/2ztxa8/full

2
如何为动态世界实现符号距离场射线行进?
我想我了解“签名距离场射线行进”的基本知识。您使用一堆距离场(例如:http : //iquilezles.org/www/articles/distfunctions/distfunctions.htm)为场景建模,然后对于投射射线的每个像素,从射线的起点开始,找到到该点最近的物体的距离,然后将该点增加最近的距离,直到您碰到东西。我设法制作了一个简单的渲染器,这是该技术的大多数描述都停止的地方。 这使我对如何在实际场景中使用SDF Ray Marching提出了一些疑问: 问题1:在真实游戏中,场景通常很复杂,并加载到CPU上,并带有许多动态对象。我了解基本的遮挡剔除(例如八叉树),并且通过多边形渲染,可以在视锥中创建要渲染的项目列表(在CPU上)。 因此,想象一下我有一个非常复杂的场景,其中许多字符和动态对象在屏幕上移动,并由CPU控制。如何将每帧要渲染的对象流式传输到GPU?每个示例都将场景硬编码为GLSL。有人可以分享动态传输到着色器的级别的示例吗? 问题2:物体如何具有多种颜色?distance函数仅返回一个距离,但是实现通常如何将颜色传回?(例如,您击中了一个红色的球体,而不是一个蓝色的立方体。)如果这是一个CPU实现,那么在终止光线行进器时,我可以在distance函数内部调用一个global函数,这也可以传递被击中对象的纹理/颜色。但是,如何在GLSL中返回商品的颜色或纹理? 谢谢。


2
用已知队列优化对战游戏的算法
我正在尝试用C#.NET为称为Flowerz的游戏编写求解器。作为参考,您可以在MSN上播放它,请访问:http: //zone.msn.com/gameplayer/gameplayer.aspx?game=flowerz。我在写它只是为了好玩,而不是为了任何类型的作业或任何与工作相关的事情。因此,唯一的限制是我的计算机(具有8GB RAM的Intel i7内核)。就我而言,它不需要在其他任何地方运行。 简而言之,其规则如下: 有一个装满彩色花朵的队列。它的长度是任意的 队列不受影响 队列在级别开始时生成 花有一种或两种颜色。 如果有两种颜色,则有外部颜色和内部颜色。在两种颜色的情况下,外部颜色用于匹配。 如果匹配,则外部颜色消失,花朵现在是与内部花朵颜色相同的单色花朵 游戏的目标是创建三个(或更多)相同颜色的比赛 当单色的花朵是火柴的一部分时,它会从运动场上移开,从而创建一个空白空间 您可以将单色花朵与双色花朵的外部颜色进行匹配。在这种情况下,单色花消失,两色花的外部颜色消失而内部颜色保留 当队列为空且剩余至少一个空白处时,您将赢得回合 级联匹配是可能的。级联是指三朵(或更多)外花消失,而它们的内在颜色又形成了三朵(或更多花)链。 比赛场地始终是7x7 田野上的一些空间被岩石覆盖 你不能在岩石上放花 队列还可以包含一个小铲,您可以使用该小铲将任何放置的花朵移至空闲空间 您必须使用铁锹,但实际上不必移动花:将花从原位放回原处是完全合法的 队列中还可以包含彩色蝴蝶。当您在花朵上使用这只蝴蝶时,花朵会得到蝴蝶的颜色 将蝴蝶应用于具有两种颜色的花朵,导致花朵仅获得一种颜色,即蝴蝶的颜色 您可以将蝴蝶浪费在已经有这种颜色的空白处或花朵上 清除场地并不能赢得比赛 求解器的目标很简单:找到一种清空队列的方法,在运动场上保留尽可能多的剩余空间。基本上,人工智能为我玩游戏。求解器的输出是包含找到的移动的列表。我对得分不感兴趣,但对生存时间越长越感兴趣,因此我对留下尽可能多的空地的动作感兴趣。 不用说,队列越大,搜索空间就会迅速增长,因此就不会有暴力行为了。如果我没记错的话,队列从15开始,每两到三个级别以5增长。而且,当然,将第一朵花放在(0,0)上并将第二朵花放在(0,1)与将第一朵花放在(1,0)和第二朵花(0,0)上是不同的,尤其是当早先的一轮花已经充满了田野。这样简单的决定可能会有所不同。 我的问题如下: 这是什么问题?(请考虑旅行推销员,背包或其他组合问题)。知道这一点可以使我的Google-fu更好。 哪种算法可以快速给我带来良好的效果? 关于后者:最初,我尝试编写自己的启发式算法(基本上:如果我知道队列,该如何解决?),但这会导致很多边缘情况和得分匹配,而我可能会错过这种情况。 我当时在考虑使用遗传算法(因为我至少知道如何使用它...),但是在确定板的二进制表示时遇到了一些问题。然后是交叉问题,但是可以使用有序交叉算子或类似类型的操作来解决。 我的猜测是,求解器必须始终知道电路板配置和它要清空的队列。 我知道其他一些启发式算法,例如神经网络和模糊逻辑系统,但是我缺乏经验,无法知道哪种算法最适用,或者是否还有其他算法更适合手头的任务。
10 c#  algorithm  ai  puzzle 

3
将凹面网格分解为一组凸面网格
我希望能够将凹形网格分解为一组凸形网格,原因有两个: 透明渲染 物理形状 是否有一种算法将一组三角形(凹面)作为输入并输出许多三角形(凸面)?我希望它不填充原始网格的各个部分之间的孔。 我已经遇到了一个小主意:找到所有凹形边缘,然后沿边缘环将网格划分。我在正确的轨道上吗?我该如何实施?

4
星际经济模拟
我正在设计一款让人想起Elite或Escape Velocity的游戏,那些古老的太空交易游戏,您要在太空中扮演旅行商人。 我希望游戏的经济至少类似于真实的经济。我可以查看哪些可用资源以了解执行模拟所需的算法? 一个很大的障碍是我在数学方面非常可怕。因此,简单的解释将是理想的。 我认为星际经济与全球经济没有什么不同。某些物品只能在某些地方制造(由于资源和技术水平的原因),运送物品需要花费时间和金钱,不同地方的人们需要不同的物品……只是城市,而不是城市。 谷歌搜索“经济学模拟算法”和类似术语几乎没有用处,我没有什么背景需要了解。 有人知道我可以研究的任何有用资源吗?

3
在六角形网格上显示范围
这是情况。 我有一个六角板,上面有一个单位,具有速度或移动值。4。地形不同,成本也不同。当我单击该单位时,游戏应向我显示移动范围。 我的解决方案是使用A *寻路来检查4个范围内的每个十六进制,如果路径成本小于4,则此范围内的十六进制。最后,游戏很好地向我显示了该单元的范围。 我的问题是:是否有其他解决方案可以在十六进制网格或正方形网格上搜索范围,因为即使我为自己在解决方案中所做的事情感到非常自豪,我认为这还是有点夸张了吗? 是什么让我问这个问题?我注意到,当单位速度为4或6甚至8时,我的计算机达到计算范围的时间确实不错,但是当速度为10或更高时,我注意到我需要等待几秒钟来进行计算在真实游戏中,我宁愿看不到这样的东西,而且我的A *寻路功能已经过优化,因此我认为我的解决方案是错误的。 感谢您的任何答复。

2
使用3D Perlin Noise生成时如何去除浮动地形?
我目前正在使用3D Perlin Noise与Marching Cubes结合生成随机地形。 我的问题似乎在于缩放噪声函数以在我的地形中获得合理的高度。如果仅使用一个八度音程,则显然会插入与噪声有关的所有点,从而获得相当平滑的数据。但是,要获得悬垂/凹面/锯齿状的地形,我必须使用振幅变化的多个八度音和/或将结果值缩放到我想要的“最大”高度。 我可能会丢失一些东西,但是通过使用具有3D Perlin噪声的行进立方体,我经常得到一些浮动的地形。 关于如何纠正此问题或是否有其他噪声函数可以用来获得我所描述的结果的任何想法?我想要丘陵/山谷/山脉/湖泊/等。无需将浮动位与其他映射区分开。我相信,这与Minecraft的地形在生成时偶尔会漂浮在天空中的情况类似。 感谢您的协助,神话

4
低功耗硬件上的圆周运动
我当时在考虑平台和敌人在旧的2D游戏中盘旋运动,我想知道这样做是如何进行的。我了解参数方程式,使用sin和cos做到这一点很简单,但是NES或SNES可以进行实时触发调用吗?我承认严重的无知,但我认为那是昂贵的手术。有什么聪明的方法可以更便宜地计算出该运动吗? 我一直在研究从trig sum identities派生一种算法,该算法仅使用预先计算的trig,但这似乎很复杂。
10 algorithm 

1
构造规则的n面多边形的角的算法
我已经使用很多关键字组合在Google上进行了搜索,但令我惊讶的是,我找不到用于将规则的n面多边形构造到给定圆中的算法,即找到n个角点的坐标。我所能找到的只是如何通过物理罗盘和直尺或无源的交互式浏览器插件进行操作的说明。 那么我在哪里可以找到这样的算法呢?

2
根据相邻图块选择图块
我正在使用平铺的地图编辑器,因此我需要根据相邻的图块自动选择图块。例如,当将道路砖放置在另一个道路砖旁边时,需要将两者定向,以便它们形成连续的道路。如果周围还有其他道路,我们可能需要使用转角或交叉路口砖。 谁能推荐一些算法来做到这一点?该游戏使用8向方形平铺地图。

2
Unity Occlusion Portal:什么以及如何?
(在这里,我在Meta上吃了我的话,即在Unity Answers上发布Unity问题...,因为该网站的响应速度不及此网站。) Unity提供基于单元的遮挡剔除(我相信是通过Umbra)。但是,它支持的较新功能是“遮挡门户”。 问题是,如果基于BSP的遮挡剔除已经是Unity的功能,门户将添加什么,以及如何添加? PS。这个问题不是“什么是门户?” -我知道原始的Quake BSP风格的门户-这部分是为什么我在Unity中发现显式门户概念很奇怪的原因,因为它仍然使用BSP。

4
渲染地图上地球大小的Minecraft需要什么样的硬件?
我一直在思考这个问题。使用当前技术是否可以在基于体素的游戏中创建地球的1:1复制?存储这张巨大地图的最佳数据结构是什么?应该使用哪种算法实时呈现此数据结构? 这些问题做出以下假设: 每个体素的分辨率为1立方米。 为了简单起见,每个体素仅需要1个字节的元数据信息。该信息将用于存储识别体素的“类型”(地球,水,岩石等)。 土方体积为1 * 10ˆ21立方米。 在“当前技术”中,我包括市售的任何东西,但不包括超级计算机。 仅将地球地形和测深法用于生成地图。排除人类建筑,植物或洞穴。地下街区将根据地质研究进行选择,例如:如果深度大于3000 km,则渲染“岩浆”体素。 就像在《我的世界》中一样,地图不是静态的,可以在游戏中进行修改。 “无限”的绘制距离是一个很大的优势,如果您不能飞起来观察整个星球,那么将整个地球放在地图上有什么意义呢? 当我想到这个问题时,我得出的第一个结论是,以线性方式存储地球数据是不可行的,假设每个体素仅占用1个字节的内存,那么仍然需要1个零字节来存储地图。因此,需要某种压缩方式。 我认为体素八叉树可以压缩地图,但是我不确定多少。该体素贴图的熵可能很低,因此我猜想可以实现很高的压缩水平。 免责声明 这是一个理论问题,我无意编写体素地球 编辑 ESA GOCE已经以1cm-2cm的精度绘制了大地水准面。我相信这些信息可用于生成非常精确的地球高度图。这样就无需使用算法来填补地球地形中的空白。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.