- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
好的,这是一个抽象的算法挑战,它将保持抽象,因为它是我将要使用它的地方的最高 secret 。
假设我们有一组对象 O = {o_1, ..., o_N} 和一个对称相似度矩阵 S,其中 s_ij 是对象 o_i 和 o_j 的成对相关。
还假设我们有一个一维空间,其中可以放置物体的离散位置(例如将 N 个盒子排成一排或为人们准备椅子)。
有了一定的位置,我们可以衡量从一个物体的位置移动到另一个物体的位置的成本,即在我们到达目标之前需要经过的盒子数量乘以它们成对的物体相似性。从一个位置移动到紧接在该位置之后或之前的盒子是零成本。
想象一个例子,对于三个对象,我们有以下相似度矩阵:
1.0 0.5 0.8
S = 0.5 1.0 0.1
0.8 0.1 1.0
那么,树框中对象的最佳排序显然是:
[o_3] [o_1] [o_2]
此排序的成本是从一个对象移动到所有其他对象的成本(计数框)的总和。所以这里我们只计算 o_2 和 o_3 之间的距离等于 1box * 0.1sim = 0.1 的成本,与:
[o_3] [o_1] [o_2]
另一方面:
[o_1] [o_2] [o_3]
成本 = 成本(o_1-->o_3) = 1box * 0.8sim = 0.8。
目标是确定 N 个对象在可用位置的放置方式,使所有可能的对象对的上述总成本最小化!
一个类比是想象我们有一张 table 和椅子并排排成一排(像盒子一样),你需要让 N 个人坐在椅子上。现在那些人有一些关系——可以说——他们中的一个人想和另一个人说话的可能性有多大。这是站起来经过一些椅子并与那里的人交谈。当人们坐在两把连续的椅子上时,他们就不需要移动来互相交谈。
那么我们如何才能降低这些人的数量,从而使两个人之间的距离成本最小化。这意味着在夜间,客人步行的总距离接近于最小值。
贪心搜索是……算了!我很想听听是否有此类问题的标准表述,我可以找到一些文献,以及不同的搜索方法(例如组合优化领域的动态规划、禁忌搜索、模拟退火等)。
期待听到您的想法。
附言。我的问题与此线程有一些共同点 Algorithm for ordering a list of Objects ,但我认为这里最好将其作为问题提出,并且可能略有不同。
最佳答案
这听起来像是二次分配问题的一个实例。特殊性是由于这些位置只放在一条线上,但我认为这不会使它更容易解决。 QAP 通常是 NP 难的。除非我误解了你的问题,否则你无法找到在多项式时间内解决问题而不同时证明 P=NP 的最优算法。
如果实例很小,您可以使用精确的方法,例如分支定界法。如果问题更难,您还可以使用禁忌搜索或其他元启发式方法。我们在 HeuristicLab 中实现了 QAP 和一些元启发式算法.您可以在 GUI 中配置问题,只需将相似度和距离矩阵粘贴到适当的参数中即可。尝试从强大的禁忌搜索开始。这是一种较旧但仍然运行良好的算法。如果您想自己实现它,Taillard 在他的网站上也有它的 C 代码。我们的实现基于该代码。
已经有很多关于 QAP 的出版物。更多现代算法将遗传搜索能力与本地搜索启发式相结合(例如 Stützle IIRC 的遗传本地搜索)。
关于algorithm - 对象的最佳放置 wrt 成对相似性权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504235/
我有几个系统,其中包含用户表以及某种形式的业力/权重/声誉。有时是用户发布的帖子数量,有时是用户在网站上的所有事件中收到的赞成/反对票数。 USER { id int name str
我需要能够使用填充的相对大小 - 根据设备的分辨率和 dpi 变大或变小。 例如,如果我的 View 宽度为 100 像素,我希望左侧填充 10 像素,右侧填充 10 像素。但是,如果它在更高密度的屏
我目前正在使用由大约 10 个字段组成的 Solr 索引数据。当我执行搜索时,我希望某些字段的权重更高。谁能帮我指出正确的方向? 例如,在所有字段中搜索“超人”等术语时,应在“Description”
我正在使用 igraph 模拟网络随时间的变化在 r并且我正在寻找一种有效且可扩展的方式来对此进行编码以用于业务。 网络变化的主要驱动因素是: 新增节点 新领带 新节点权重 在第一阶段,在 100 个
我一直在寻找一种使用OpenVINO框架上的C++ API获取网络每一层权重/参数和偏差张量的方法。我在文档中找不到任何内容,在示例中也找不到任何示例。我如何提取这些张量? 谢谢, 塞萨尔 编辑: 分
我的问题与 PHP Memcache 扩展的 addServer 函数中的“weight”参数有关。 在过去的几个月里,我一直在为所有服务器使用“weight = 1”。我现在正在尝试应用以下配置以最
我应该使用哪种数据结构来保持元素按给定权重排序?我需要在集合中添加元素,其中每个元素都会生成特定的权重,但该权重不包含(也不计算)在元素本身内部;它是由元素之外的其他人计算的。而且,权重不需要存储(但
我正在尝试在 keras/tensorflow 中使用具有多个类的焦点损失,这导致使用我猜的分类焦点损失。我找到了一些实现here和 there或there 。 据我了解,焦点损失中的参数a主要用于二
我有一个像这样的 Pandas 数据框: df = pd.DataFrame({'id': [121, 34324, 111, 12, 45, 232], 'weight'
我有一个带有输出神经元的神经网络,我想在软最大化之前使用经过训练的权重进行线性缩放。 我有 10 个输出,我想要 10 个权重,在输出被软最大化之前乘以每个输出。因此每个输出的权重为 1。 但我不断收
我有这样的布局: 我希望它看起来像: TextView - 宽度的 40%,带 ImageView 的布局
这让我彻底疯了。我想在 android 中使用有点复杂的布局。我正在尝试使用权重而不是固定事物的大小。也许我应该放弃…… 这是我想做的: 我想要 3 个 ScrollView (里面有 TextVie
我正在尝试开发类似于网格但使用 LinearLayout。我想在单行中有 3 张图像和图像后的确切底部文本。 我尝试过的: LinearLayout layout = new LinearLayout
我想在同一行添加一个 EditText 和一个 Button,我想将 80% 的行给 editText,20% 给 Button。 这是我的代码:
我有一个 mysql 表,其中存储一列(称为 tickets),并且 tickets 值可以是任意数字。 我想要做的是有一个mysql查询,从列中选择所有行,按降序对它们进行排序,然后使用PHP对查询
我搜索了一段时间,但结果让我很困惑,因为我对 MySQL 还很陌生。 我有一个包含这 4 列的表:AUTO_INCREMENT ID、NAME、TYPE、CHANCE 所以行看起来像这样: 1, NO
我不完全是 JS 专业人士,虽然不漂亮或高效,但这是有效的。 实际上,我在表单中有重复的字段组,并允许用户根据需要将数据从第一个字段复制到所有 5 个字段。 如何使这段代码更高效? function
我正在使用xgboost库来训练二元分类器。我想通过向权重添加噪声(例如集合中树的叶节点的值)来防止训练算法的数据泄漏。为此,我需要检索每棵树的权重并修改它们。 我可以通过在 Booster 对象上使
我正在尝试让 LinearLayout 中的 View 填充宽度。我尝试使用 LayoutParams 设置它,但它给了我一个错误: 我的代码: EditText et = new EditText(
我想改变 ScrollView 的权重,但找不到实现它的方法。 这是我的 XML: **other layout.. 从代码中只能设置scrollView的高度或者宽度,weigh
我是一名优秀的程序员,十分优秀!