问题标签 [heuristics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
826 浏览

algorithm - 距离矩阵的近似估计

我有一组 N 个对象,我想计算一个 NxN 距离矩阵。有时我的 N 个对象集非常大,我想通过仅计算距离比较的子集来计算 NxN 距离矩阵的近似值。

谁能指出我计算全距离矩阵近似值的方向?我有一些想法,但我想避免重新发明轮子。

编辑:算法类型的一个示例将利用这样一个事实,即如果对象 A 和对象 B 之间的距离非常小,并且对象 B 和对象 C 之间的距离非常小,则必须有一些物体 A 和 C 之间的距离很短。

0 投票
3 回答
288 浏览

css - 我可以遵循任何 CSS 填充启发式方法吗?

我有一个简单的问题:

  • 我在 div 中有一个图像。
  • 为了使页面更美观,我将为图像添加一些额外的填充。

与其盯着它看,我想知道:

我可以遵循任何 CSS 填充启发式方法吗?

我在想像 Jakob Nielsen 这样的人可能已经建立了一些关于页面布局和填充(即最小像素填充或比例)的最佳实践。

  • 我并不是说这是一个特别难以解决的问题。
  • 但这是一个很可能会再次出现的问题。
  • 而且我想要一些启发式方法来指导我将来的填充选择。

任何帮助,将不胜感激。

0 投票
22 回答
23224 浏览

artificial-intelligence - 吃豆人:眼睛是如何回到怪物洞的?

我在 Pacman 中找到了很多关于鬼魂 AI 的参考资料,但没有一个提到在 Pacman 吃掉一个鬼魂后,眼睛是如何回到中央鬼洞的。

在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落硬编码应该采取哪个方向。

有没有更好/或最好的解决方案?也许是一个通用的,适用于不同的关卡设计?

0 投票
4 回答
1423 浏览

algorithm - 在一个集合中查找一组数字,这些数字加起来是另一个集合中的一个数字

对于我正在制作的游戏,我有一个数字列表——比如 [7, 4, 9, 1, 15, 2](以此命名A)——还有另一个数字列表——比如 [11, 18 , 14, 8, 3](命名为B)——提供给我。目标是找到所有数字组合A,加起来等于B. 例如:

  • 1 + 2 = 3
  • 1 + 7 = 8
  • 2 + 9 = 11
  • 4 + 7 = 11
  • 1 + 2 + 4 + 7 = 14
  • 1 + 2 + 15 = 18
  • 2 + 7 + 9 = 18

...等等。(为此,1 + 2与 相同2 + 1。)

对于像这样的小列表,仅暴力组合是微不足道的,但我面临着看到数千到数万个这样的数字的可能性,并且将在应用程序的生命周期内重复使用此例程。是否有任何优雅的算法可以在合理的时间内以 100% 的覆盖率完成此任务?如果做不到这一点,我能找到任何一种体面的启发式方法,可以在合理的时间内给我一个“足够好”的组合吗?

我正在寻找一种伪代码或任何相当流行且可读的语言的算法(注意那里的“和”......;),甚至只是关于如何实施这种搜索的英文描述。


编辑添加:

到目前为止提供了很多很好的信息。谢了,兄弟们!暂时总结一下:

  • 问题是 NP-Complete,所以要在合理的时间内获得 100% 的准确率,没有任何办法。
  • 该问题可以看作是子集和背包问题的变体。两者都有众所周知的启发式方法,它们可能适用于这个问题。

让想法不断涌现!再次感谢!

0 投票
0 回答
181 浏览

html - 上一个/下一个网页链接启发式?

我正在寻找一个启发式列表,给定一个 HTML 文档和/或网页上的一组 URL,这将给出一组来自该页面的上一个/下一个链接的 URL。此外,假设您获得了基本 URL。我不需要知道链接是具体是下一个还是上一个 URL,只要它是这两个 URL 之一即可。

我已经有了一个简短的清单:

  • 与 URL 相同的域和路径,但查询参数不同。
    • 基地:abc.com/story
    • 下一个/上一个:abc.com/story?p=2
      • 或者
    • 基地:abc.com/story.html?p=5
    • 下一个/上一个:abc.com/story.html?p=3
  • 除了数字路径元素之外,URL 与基本 URL 相同。
    • 基地:abc.com/story
    • 下一个/上一个:abc.com/story/2
  • 在 DOM/HTML 中相邻的几个链接。
    • 我知道这也可能像页眉/页脚,我必须以某种方式解释这一点......有什么想法吗?
  • 文本为数字或测试为“Next”、“Previous”、“First”、“Last”、“Back”、“Forward”等单词的链接...

我知道我在这方面永远无法做到完美,但我希望获得尽可能多的覆盖范围和尽可能多的启发式方法,以期获得良好的组合或数量和质量。谢谢。

0 投票
1 回答
82 浏览

c# - 确定 URL 是否在给定 URL、页面 DOM、父 URL 和其他页面 URL 的网页的页眉/页脚中

给定一个 URL、第一个 URL 所在网页的 URL、网页的 DOM 以及网页上其余 URL 的列表,我如何可靠地确定 URL 是否在页面的页眉/页脚中或者如果两者都不在?

我正在使用 C#/.NET。

我知道没有解决方案是完美的,因为网页没有语义表达,也因为一些网站/页面专门混淆了他们的页面,但我想建立一些适用于 75% 网页的逻辑。

此外,是否还有其他有助于确定 URL 在页面中的位置的信息?

0 投票
4 回答
2394 浏览

algorithm - 具有 5x5 网格的 N-Puzzle,理论问题

我正在编写一个程序,它使用两个启发式来解决一个 24 谜题(5x5 网格)。第一个使用不正确位置的块数,第二个使用块当前位置和所需位置之间的曼哈顿距离。

我在程序中有不同的函数,它们将每个启发式与 A* 和贪婪搜索一起使用并比较结果(总共 4 个不同的部分)。

我很好奇我的程序是否错误,或者是否是拼图的限制。拼图是随机生成的,碎片被移动了几次,大部分时间(~70%)通过大多数搜索找到了解决方案,但有时它们会失败。

我可以理解为什么贪婪会失败,因为它不完整,但是看到 A* 是完整的,这让我相信我的代码中有错误。

那么有人可以告诉我这是我的思维错误还是谜题的限制?对不起,如果这措辞不好,我会在必要时重新措辞。

谢谢

编辑:

所以我相当肯定这是我做错了。这是我如何进行搜索的分步列表,这里有什么问题吗?

  • 为边缘创建一个新列表,按使用的启发式排序
  • 创建一个集合来存储访问过的节点
  • 将拼图的初始状态添加到边缘
  • 虽然边缘不是空的..
    • 从边缘弹出第一个元素
    • 如果之前访问过该节点,则跳过它
    • 如果节点是目标,则返回它
    • 将节点添加到我们的访问集中
    • 展开节点并将所有后代添加回边缘
0 投票
2 回答
661 浏览

algorithm - 什么是线程推文的一套好的启发式方法?

每个人都知道,如果您想串接电子邮件,您可以使用Jamie Zawinski 的算法。但这是一个新世纪,并且有一种新的消息服务。

Twitter 上发布的线程状态更新的最佳算法是什么?

我绝对希望它处理的事情:

  • 最简单的部分:使用in_reply_to_status_id, in_reply_to_user_idin_reply_to_screen_name. (顺便说一句,找到这些值的适当文档本身就很有用!例如,此类文档显然与 from here没有关联。)

  • 从提到具有@约定的用户但未明确回复特定消息的消息中推断“回复”关系的良好启发式方法。 如果您要求,这些“提及”现在会在状态的“实体”元素中提供。这些启发式可能会考虑 (a) 两次状态更新之间的时间,(b) 两个用户之间是否有后续回复等。(回复由旧式转发和附加评论组成,如user85509 所述以下 只是这种回复方式的一个例子。)

  • 发生在两个以上用户之间的对话。

  • 使用一组给算法的推文,或 Twitter 上的所有推文。

...但也许您可以想到更多。

0 投票
2 回答
136 浏览

algorithm - 算法:确定主页的类型?

我一直在考虑这个问题,所以我想我会寻求建议:

我有一些爬虫进入某个站点的根目录(可以是来自 www.StackOverFlow.com、www.SomeDudesPersonalSite.se 甚至 www.Facebook.com 的任何内容)。然后我需要确定我正在访问什么“主页”。不同的类型可能是:

  • 论坛
  • 博客
  • 链接目录
  • 社交媒体网站
  • 新闻网站
  • “一个人的网站”

我已经集思广益了一段时间,最好的解决方案似乎是点系统的一些启发式方法。我的意思是不同的趋势对不同的类型给出了一些分数,然后程序会做出猜测。

但这就是我卡住的地方。你如何检测趋势?

  • 目录可能很容易:如果站点索引/传出链接非常高,目录应该得到几个点。
  • 新闻网站/博客可能很容易:如果索引的大量网站都有日期时间,那么这些类型应该得到几分。

但我真的找不到太多趋势。

SO:我的问题是:关于如何做到这一点的任何想法?

非常感谢..

0 投票
1 回答
406 浏览

java - 如何实现启发式以在 Java 中选择合适的图像

对于显示产品信息的页面,我们必须从一组显示相同内容但具有不同格式(gif、png、jpg 等)、不同质量(jpeg 压缩)、不同的图像中选择最佳产品图像尺寸(缩略图,小,中,大)等。

选择取决于用户的浏览器、页面的当前大小、图像的用途等。

我们当前的解决方案是根据当前的需求构建一个 sql 查询,可能看起来像这样:

这是一个简单的例子,原来的例子要复杂得多。创建此语句的 java 代码使用了很多 if 和 case,并且开始变得非常难看。

在 Java 中实现这种启发式的最佳方法是什么?有没有图书馆可以提供帮助?也许沿着定义规则对象的路线:

我搜索了规则引擎,甚至有一个 JSR 和一些开源规则引擎,但它们似乎都是在处理商业规则。

我有强烈的感觉,我们正在重新发明轮子,而且我们根本找不到任何解决方案,因为我们不知道这些东西的正确名称;-)

任何帮助将不胜感激!