Questions tagged «algorithm»

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

2
查找哪些瓷砖与一条线相交,而无需遍历所有瓷砖或跳过任何瓷砖
我已经盯着这个问题几天了。我整理了此图形以帮助我直观地看到问题:( 从图形中我们知道线与[1,1],[1,2],[2,2],[2,3]相交,以[ 3,3]) 我想沿着直线移动到每个网格空间,并检查网格空间的材质是否牢固。我觉得我已经知道所涉及的数学,但是我还不能将其组合在一起。我正在使用它来测试视线并在通过我的寻路算法找到路径后消除节点-我的代理无法看到实体块,因此它们无法通过实体,因此不会从路径中消除该节点,因为它需要导航一个角。 因此,我需要一种算法,该算法将沿着直线移动到它相交的每个网格空间。有任何想法吗? 我看了很多常见的算法,例如布雷森汉姆算法,以及沿着线以预定间隔步进的算法(不幸的是,如果它们与比步长小的楔形相交,则此方法会跳过这些图块)。 我现在用大量floor()和ceil()函数填充我的白板-但是它变得过于复杂,我担心它可能会导致速度变慢。

1
基于游戏的理论计算工具的算法(英雄联盟)
我想为一个游戏(传奇联盟)创建一个模拟器(主要用于测试)。 游戏基础: 您有一个具有以下统计数据的英雄: 健康点 攻击伤害 攻击速度 盔甲 护甲穿透 移动速度 英雄可以拥有4种技能(每个级别上只有一个技能点)(大多数情况下它们是手动激活的,具有冷却时间,伤害,攻击力/攻击伤害比例和技能等级)+被动技能 您可以杀死具有相同属性的敌方英雄或中立怪物: 健康点 攻击伤害 攻击速度 盔甲 我想做的是: 创建一个工具来测试特定物品或特定属性的增加是否会加快您的杀伤力/速度。 地图:http : //evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg 统计示例: 马力:420 广告:55 AttackSpeed:0.613(攻击/秒->每1 / 0.613秒的攻击) 护甲穿透力:25 角色将以1 /攻击速度自动攻击敌人,并造成攻击伤害(有一个计算伤害的公式,但是我猜这个阶段并不重要),一旦他们死了,就以移动速度移动到下一个敌人(您可以在地图上看到营地,黄色的头骨) 我在考虑算法: 我想如果我只是从i = 0到i = 30000(计算毫秒)做一个for,那么我就可以检查敌人的hp和我的hp,以及每个ms都非常糟糕(相当的cpu重,我想给它放一些随机数,所以我应该能够总结出1k次迭代,这是不可能的) 其次,我认为我应该做一个从i = 1到30的取值,并每秒检查一次,并检查最后一秒发生了什么,但是一些中性怪物在一个大营地(最多4个怪物),并且这样,代码变得越来越复杂。 我将为每个玩家/怪物创建线程,一旦它们完成,将在死亡时进行查找,并降低玩家的生命值。 我的问题是,这是正确的方法吗? TLDR:我想创建一个工具来对游戏进行分析(迭代1k并计算平均值),该统计数据的增加将使角色杀死更快的中立怪物。 我更喜欢java,但是atm却使我陷入了困境。 @Karoly S:是的,我不好,.com-> .eu 我一直在努力: 我正在检查每个对象的剩余时间(玩家技能,自动攻击,增益),并始终选择最短的时间,并存储last_time,并将时间与时间相加,在下一轮中,我用(time-上次) 如果对象的剩余时间为0,它将执行所需的任何操作。 我不知道这是否有效,但这是我能做的最好的事情。
10 algorithm 

3
实时策略游戏中的网络
当前网络实时战略游戏的最新状态是什么? 我似乎还记得几年前,一些AAA冠军只传递了玩家的信息(《星际争霸1》,《帝国时代》)。由于这需要您完全确定所有其他内容,因此这仍然是可行的选择吗?同步随机数生成器似乎是可行的,但是FPU实现中的细微差别如何? 还是战略游戏使用的是更接近动作游戏网络的东西,而是传输单个实体(使用某种形式的预测和(增量)压缩)? 如果是这样,如何处理弹丸等易挥发物品? 客户端/服务器与点对点呢?我猜所有这些都是紧密相关的。 感谢您的时间!


3
减少图的边数,使其保持连接状态
我正在设计一个带有随机生成的地牢的游戏。我想将其视为一个连接的,无向的图,其中节点是房间,边缘是门或走廊。然后,我选择一个“侧面”节点作为地牢入口,计算该入口与所有其他节点之间的距离,并确定最远的节点之一是地牢的“目标”(宝藏,上司,公主等)。 我看到了两种生成最终地牢地形的方法: 首先生成一个随机图,然后在考虑边缘连接的情况下尝试用随机位置的房间填充2d世界。我认为这有时会很困难,因为可能会将房间生成器“锁定”以尝试将其放置在不可能的地方。 生成第一个房间,将它们随机放置在合适的位置,然后将结果映射到节点和边缘。我决定尝试一下。 我的想法包括: 首先生成一个包含整个地下城的大房间。 在大房间内的任意位置放置一堵墙,将大房间分成2个不同面积的小房间。 然后,我继续将每个房间划分为2个,直到它们变得太小或房间总数达到最大值(或其他任何条件)为止。每个新房间都是一个节点。 完成后,我检查每个房间并找到所有其他相邻的房间,将2个节点标记为通过边连接。 这样,我确保所有房间在2D世界中都有可能的位置,并通过连接的图形正确映射。 我的问题是连接房间的门和走廊太多。 因此,我想使用一种算法来减少连接的无向图的边数,但最后保持连接状态(所有节点保持可达)。

1
现实的缓慢降雪算法?
有没有一种好的算法可以模拟落雪?我对缓慢下雪的雪特别感兴趣,因此它并不是直线下降,而是有一点偏离。甚至可能包括模拟风浪(风速),可变大小等。关于模拟现实雪运动或在游戏环境中进行模拟的算法,是否有任何论文或文章? 我对2D算法特别感兴趣,但是我想任何算法都可以轻松应用于3D。


3
确定网格上的一组拼贴是否形成封闭的形状
给定网格上的一组图块,我想确定: 如果瓷砖是一个封闭的图形 如果将板的侧面算作图形的边缘时,这些瓷砖形成一个封闭的图形 如果前两个陈述中的任何一个为真,则附加图块中的其他图块将形成初始图块。 玩家将首先按下一个图块,然后将其手指拖动到其他图块以创建一串相同颜色的图块。我将检查下一个磁贴是否有效。例如 如果玩家在红瓦开始,他们唯一的下一个有效的行动是到邻近的红瓦(对角线做计数)。当用户抬起手指时,我需要能够检查上述3个项目。 所以我最初的想法是,由于我每次走时都要检查链条的有效性,所以当玩家抬起手指时,我可以检查第一个和最后一个瓷砖是否相邻。(我已经知道它们是相同的颜色。)如果它们相邻,我会预感会做出一个封闭的图形,然后我要来这里尝试看看我是否丢失了一些大东西,并得到某种逻辑/数学证明,我的直觉是正确的(或一个例子证明它是错误的。) 但是那时候我想到了项目2:我还必须考虑使用木板边缘作为封闭图形侧面的链条。在这种情况下,链中的第一个项目和最后一个项目不会相邻,但是我仍然会附上一个数字。所以现在我回到正题。 我应该如何处理这一系列的网格坐标,以确定它们是否包含封闭的图形?有一次我不知道我有一个封闭的身影,那是什么让那个属于其范围内的所有瓷砖的附加列表的最佳方式? 上面我画了我期望该测试有4种可能结果的图片。 链没有附上数字。 链确实有一个封闭的数字。 如果将板的侧面算作图形的边缘(或一个以上的边缘),则链条会形成一个封闭的图形。 该链的确制作了一个封闭的图形,但是有一些额外的数据点(用户已有效选择作为链的一部分),这些数据点不属于所创建图形的一部分。 情况4是最棘手的,因为您必须提取“额外”链节以找到封闭的图形和落入其中的零件(但不能围绕“未封闭”的区域)。 所以...有人想办法解决这个问题,还是对我来说只是一个起点?在这一点上,我有点转圈,可以使用另一组眼睛。
10 algorithm  grid  graph 

3
优雅的自动平铺
我正在寻找有关人们如何在基于图块的游戏中实现自动平铺的信息。到目前为止,我总是用一堆硬编码的“ if ... else ...”语句来即兴创作,现在我决定是时候找到一些更优雅的解决方案了。我在Internet上搜索了有关该主题的实现示例和讨论的示例,但我只想出了三篇文章: http://www.codeproject.com/Articles/106884/Implementing-Auto-tiling-Functionality-in-a-Tile-M http://blog.rpgmakerweb.com/tutorials/anatomy-of-an-autotile http://web.archive.org/web/20130927193449/http://www.squidi.net/mapmaker/musings/m091016.php (特别是最后一个是全面的,非常有帮助。) 我还研究了各种实现和库的文档,例如flixel:http ://www.flixel.org/features.html#tilemaps 可悲的是,我所能找到的所有解决方案与我刚开始时一样,都是即兴且偶然的,几乎从来没有涵盖所有可能的情况。 我正在寻找可以从中学习的自动平铺实现的优雅示例。

3
如何计算加速度受限的对象的路径?
例如,假设我有一辆汽车,并且一辆汽车具有特定的最小转弯半径,并且我想将该汽车从a点驾驶到b点,但汽车没有面向b点。如何计算指向b点的路径?能够在b点处指定方向也是很好的(例如,您想开车到车道上然后驶入车库-如果您通过在草坪上行驶而进入车道并没有多大用处并面向侧面:) 指向文档(甚至只是名称)的指针就很好-我根本找不到任何东西。 在我的尝试中,它们在简单的情况下仍然有效,但在诸如b点比最小转弯半径更靠近a点的情况下却失败了。 例如,如何确定与此类似的路径(粗体路径): 编辑:在我的实际问题中,有一些简单的路径约束,但是我已经有一个可以运行的A *算法,但是它允许事物进行瞬时航向更改,因此看到汽车突然转90°看起来很傻当他们到达一个转折点时,一角钱。

2
建立三角形邻接数据
给定一个三角形索引列表,如何将其转换为具有几何着色器邻接关系的索引列表呢? 请注意,我们在这里严格地讨论索引 -存在顶点,但是我们将仅关注索引,因为我们可以使用它们来匹配重复的顶点,而不必进行浮点比较和epsilon-这项工作已经完成了。 我知道对于列表中的任何给定三角形,索引为{0,1},{1,2}和{2,0}(或{n,n + 1},{n + 1,n + 2},{ n + 2,n}(如果您愿意)的形式形成边缘;索引列表格式正确,并正确遵守绕线顺序。 我知道,对于任何给定的此类边缘,我们都可以在整个列表中搜索使用两个索引的另一个三角形,并且该三角形的第三个索引是用于完成该边缘的相邻三角形的索引。 我知道在邻接表中,每个原始三角形都由6个索引表示,原始索引分别进入插槽0、2、4;完成邻接的新索引进入插槽1、3、5。边缘{0,1}完成的索引进入插槽1,边缘{1,2}完成的索引进入插槽3,索引完成以完成边{2,1}进入插槽5。 我尝试了什么? 我已经尝试过强行使用,是的,那行得通,但是我追求的是更优雅的方法。 我已经尝试了Eric Lengyel的边缘列表生成器,但是(1)它似乎并不遵循原始的三角形顺序,(2)它似乎并不遵循缠绕的顺序,(3)泥泞无处接下来,在构建边缘列表之后,以及(4)我怀疑示例代码具有明显的明显错误,例如“ triangleIndex”与“ faceIndex”-作者甚至编译了代码,没关系将其运行到验证吗? 那么-从这里开始有什么建议或指示吗?

2
无人机定位
想象一个“无人机”和一个二维平面上的目标点。有八个参数: P = my position Q = target position V = my velocity I = my moment of inertia w = my angular velocity s = my angular position T = max thrust U = max torque (我们只是说目标是固定的) 无人机的工作是尽可能快地到达目标,并遵守最大扭矩和最大推力。只有两种方式施加扭矩,因为这仅在2d平面中。推力仅限于相对于飞行器方向的一个方向,并且不旋转无人机就无法瞄准。忽略任何阻力,您可以假装它在2D外部空间中漂浮。假设无人机t每隔一段时间(例如每0.01秒一次)检查一个方程式,插入参数,并相应地调整其扭矩和推力。推力和扭矩方程应该是什么?

1
gluLookAt如何工作?
据我了解, gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 等效于: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); 但是当我打印出ModelView矩阵时,对的调用glTranslatef()似乎无法正常工作。这是代码片段: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

3
有了彼此连接的房间列表,如何找到孤立的房间组?
我正在尝试创建一个小型的roguelike,并延伸到随机生成的房间和走廊。每个房间都是实例对象,并包含通过走廊连接的其他房间的数组列表。 我可以挑出未连接的房间,但是我怎么知道仅相互连接但不与大多数其他房间相连的房间呢? 为了更好地说明问题,这里是来自控制台的图像,处在一个陷井状态。房间5和6仅相互连接。我可以使用什么算法来检测?
9 java  algorithm 


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.