问题标签 [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 投票
3 回答
229 浏览

algorithm - 如何检查用户选择算法

我有一个算法,可以选择应该符合用户喜好的项目列表。
由于机密性问题,我将跳过算法的细节......

现在,我正试图想出一种方法来统计检查它,与一群人一起。
我现在检查的方式是:

  1. 算法为每个用户获得最佳结果。
  2. 将前 5 个结果与最低 5 个结果随机排列。
  3. 让人们按顺序列出他喜欢的结果(0 = 最喜欢,9 = 不喜欢)
  4. 将用户结果与算法结果进行比较。

我这样做是因为我认为为了表明算法选择了好的结果,我需要输入一些不好的结果并表明算法也知道它的坏结果。

所以,我要问的是:

用低结果洗牌是个好主意吗?

如果没有,您是否知道如何获得关于算法与用户偏好匹配程度的良好统计数据(我们有可以选择东西的用户)?

0 投票
2 回答
210 浏览

algorithm - 优化房间的 3D 布局?

给定一个图,其中节点表示 3x3x1 房间,顶点表示需要接近。应该如何将它们放置在 3D 空间中以优化整体紧密度?

示例(随机)数据结构:

(我不确定我应该在哪里问这个问题,因为它与我在 stackoverflow 上看到的大多数问题不同。我对编程解决方案/启发式算法感兴趣。)

0 投票
2 回答
2973 浏览

language-agnostic - Peg Solitaire / Senku 解算法

我需要为Peg solitaire / Senku 游戏编写求解器这里
已经有一个问题,但建议的答案是带有回溯的蛮力算法,这不是我正在寻找的解决方案。 我需要找到一些启发式方法来应用 A* 算法。剩余的钉子不是一个好的启发式,因为每一步都会丢弃一个钉子,因此成本始终是统一的。 有任何想法吗?

0 投票
1 回答
1159 浏览

python - 是否有任何“Hello World”示例类型的启发式或元启发式或优化技术的基础教程

我正在努力,但我仍然没有找到一个非常基本的教程,我可以从中开始学习元启发式和优化问题。我看过很多书,但里面全是数学。我知道最终我必须这样做,但如果至少我有一个简单的例子在我面前运行,那么我可以获得一些信心,而不是阅读书籍并且在我面前没有任何实用的东西。

任何人都可以向我指出一个教程,其中有人描述了一个小问题,然后他用启发式方法讨论了它的解决方案,以便我知道它是如何实际应用的。

I don't want anyone to write code for me but any tutorial out there which can help me in writing code for those heuristics

如果它用任何编程语言完成,那么它很好,但否则我会很高兴看到算法如何解决特定问题。

我知道有很多算法,但我不知道从哪里开始,所以只要我了解它是如何工作的,任何优化算法都可以,这样我就可以进一步进行

0 投票
5 回答
13659 浏览

python - python中CSV数据的数据类型识别/猜测

我的问题是处理大型 CSV 文件中的数据。

我正在寻找基于在该列中找到的值来确定(即猜测)该列的数据类型的最有效方法。我可能正在处理非常混乱的数据。因此,该算法应该具有一定的容错性。

这是一个例子:

底线:我正在寻找一个 python 包或一种可以检测到两者的算法

  • CSV 文件的架构,甚至更好
  • 单个列的数据类型为数组

猜测当前表示为字符串的数据类型的方法也朝着类似的方向发展。不过,我担心性能,因为我可能要处理许多大型电子表格(数据来自哪里)

0 投票
2 回答
4565 浏览

algorithm - Chomp 游戏的算法

我正在为 Chomp 游戏编写程序。你可以在Wikipedia上阅读游戏的描述,但无论如何我都会简要描述一下。

我们在一块尺寸为 nxm 的巧克力棒上玩耍,即巧克力棒被分成 nxm 个正方形。在每一回合,当前玩家选择一个方格并吃掉所选方格下方和右侧的所有东西。因此,例如,以下是有效的第一步:

在此处输入图像描述

目标是迫使你的对手吃掉最后一块巧克力(它是有毒的)。

关于 AI 部分,我使用了带有深度截断的极小极大算法。但是我想不出一个合适的位置评估函数。结果是,使用我的评估函数,人类玩家很容易战胜我的程序。

任何人都可以:

  • 建议一个好的位置评估函数或
  • 提供一些有用的参考或
  • 建议替代算法?
0 投票
1 回答
209 浏览

artificial-intelligence - 在学习启发式之前我需要学习人工智能吗

我打算根据计划和调度做一个关于元启发式的项目。但我还没有研究人工智能科目。我研究过神经网络科目。我想知道我可以直接从 Meta Heuristics 书籍和教程开始,还是在深入研究 Meta Heuristics 之前我需要了解人工智能

0 投票
4 回答
6277 浏览

algorithm - 在任意边界内打包任意多边形

我想知道是否有人可以指出适合我特定多边形打包问题的最佳算法/启发式算法。我得到一个多边形作为边界(凸面或凹面也可能包含孔)和一个“填充”多边形(也可能是凸面或凹面,不包含孔),我需要用指定的数字填充边界多边形填充多边形。(我在 2D 中工作)。

我发现的许多多边形打包启发式假设边界和/或填充多边形将是矩形,并且填充多边形将具有不同的大小。在我的情况下,填充多边形可能是非矩形的,但都将完全相同。

也许这是一种特殊类型的包装问题?如果有人对这种类型的多边形打包有一个定义,我会很乐意用谷歌搜索,但到目前为止,我还没有找到任何类似的东西非常有用。

谢谢。

0 投票
1 回答
456 浏览

algorithm - 找到使每行中的和最小的列集

给定一个矩阵 A,我正在寻找一组 p 列,它使每行中匹配单元格之和的最小值最大化。

例如:如果 p=2 且 A=

1 2 4

3 0 3

5 6 2

选择 C1 和 C2 将给出 f=min(r1,r2,r3)=min(1+2; 3+0; 5+6)=3

选择 C1 和 C3 将给出 f=min(1+4; 3+3; 5+2)=5 这是最佳选择。

是否有任何算法或启发式这样做..

谢谢

0 投票
7 回答
732 浏览

language-agnostic - 确定源文件中使用的制表符宽度的好的启发式方法是什么?

我想确定用空格缩进的源文件中使用的制表符宽度。这对于具有特别规则缩进的文件并不难,其中前导空格仅用于缩进,始终是制表符宽度的倍数,并且缩进每次增加一级。但是许多文件会与这种常规缩进有所不同,通常是为了某种形式的垂直对齐。因此,我正在寻找一种很好的启发式方法来估计使用的标签宽度,从而允许不规则缩进的一些可能性。

这样做的动机是为 SubEthaEdit 编辑器编写扩展。不幸的是,SubEthaEdit 没有使选项卡宽度可用于脚本,所以我将根据文本猜测它。

一个合适的启发式应该:

  • 性能足够好,可以交互使用。我不认为这会是一个问题,如果需要,可以只使用部分文本。
  • 语言独立。
  • 返回最长的合适标签宽度。例如,如果每个缩进实际上是两倍的级别,则任何具有四个空格的制表符宽度的文件也可能是具有两个空格制表符的文件。显然,四个空格将是正确的选择。
  • 如果压痕完全规则,请始终正确处理。

一些简化因素:

  • 可以假设至少一行是缩进的。
  • 可以假定制表符宽度至少为两个空格。
  • 可以安全地假设缩进仅使用空格完成。并不是我对tab有什么反对——恰恰相反,我会先检查是否有用于缩进的tab,并单独处理。这确实意味着可能无法正确处理缩进混合制表符和空格,但我认为这并不重要。
  • 可以假设没有仅包含空格的行。
  • 并非所有语言都需要正确处理。例如,像 lisp 和 go 这样的语言的成功或失败将完全无关紧要,因为它们通常不是手动缩进的。
  • 不需要完美。如果偶尔需要手动调整几行,世界不会结束。

你会采取什么方法,你认为它的优点和缺点是什么?

如果您想在答案中提供工作代码,最好的方法可能是使用一个 shell 脚本来读取源文件stdin并将制表符宽度写入stdout. 伪代码或清晰的文字描述也可以。

一些结果

为了测试不同的策略,我们可以将不同的策略应用于语言分布的标准库中的文件,因为它们可能遵循语言的标准缩进。我将考虑 Python 2.7 和 Ruby 1.8 库(系统框架安装在 Mac OS X 10.7 上),它们的预期选项卡宽度分别为 4 和 2。不包括以制表符开头的行或没有以至少两个空格开头的行的文件。

Python:

红宝石:

在这些表中,“正确”应被视为确定语言标准制表符宽度,“错误”应视为非零制表符宽度不等于语言标准宽度,而“无”应视为零制表符宽度或否回答。“模式”是选择最频繁发生的缩进变化的策略;“First”是对第一行缩进进行缩进;“不长”是FastAl排除缩进大的行并采取模式的策略,数字表示允许的最大缩进变化;“LR”是Patrick87基于线性回归的策略,有基于行间缩进变化和行绝对缩进的变体;“Doublecheck”(无法抗拒双关语!)是 Mark 对 FastAl 的修改