- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要开发一种算法来定位数据项在某个层次结构中的位置。我有对某些数据集的元素进行分类的层次结构。层次结构是分类的 - 顶级元素是最通用的类,与数据集的任何元素匹配,更深的元素包含与数据集的某些子集匹配的更具体的类。
例如,考虑游艇的层次结构。我们在顶部有 Yacht 类。在下一级别中,我们有帆船 和机动游艇。 帆船 有两个 child - 巡航游艇 和赛艇。巡洋舰可以按制造商进一步划分,例如 Bavaria Yachts 和 Dufour Yachts。然后每一类又可以根据船体类型、长度、帆面积等进一步划分。
这是数据集中的一个例子:
Drive Class Manufacturer Hull type Len Sails Area ... Model
Sailing Cruiser Bavaria Yachts Mono-hull 25ft 560sqft ... Bavaria 32
Sailing Cruiser Dufour Yachts Mono-hull 27ft 580sqft ... Dufour 32 Classic
通过按深度优先顺序搜索每个样本,我可以轻松地将其映射到层次结构。
乍一看是一个简单的搜索问题,但有一些困难。
第一个难点:数据项不一定包含所有元素。数据项缺少 10% 到 50% 的元素是很常见的。许多这样的元素不是很重要,例如游艇 Drive 只能是 Motor 或 Sail 所以它不会带来很多信息(只有 1 位)。使用更重要的元素可以很容易地推断出这些元素,例如,如果我们知道游艇 Model,我们可以推断出数据项的所有其他元素(或字段)。
第二个困难:一些元素在不同的数据项之间可能会有所不同,即使它们对应于层次结构中的相同位置(相同的游艇模型)。例如,帆面积可能会有很大差异,因为船主以不同的方式修改他们游艇的装备,或者只是调整面积值。
正如我已经提到的,我需要从层次结构中的数据集中定位不同的数据项。每个数据项可以以不同的精度定位。精度是层次结构中搜索过程停止的深度。换句话说,我需要获取与每个数据项对应的层次结构中的路径,并且此路径可能不完整。例如,算法可以发现数据项对应于Juliet 23游艇,但生产年份仍然未知。
如果我能得到多条路径,每条路径都有概率度量,那就太好了。例如,算法可以针对不同的生产年份为 Juliet 23 返回 4 条路径,每条路径的概率为 25%。
此时我使用深度优先搜索和一些启发式方法解决了这个问题。它给出了很好的结果,但我认为有可能获得更好的结果。也许你可以用更通用的方式来表述这个问题,这样我就可以搜索一些关于它的学术论文。
最佳答案
我觉得SQL真的可以帮你解决困难,
对于您的第一个困难:使用 NVL(field, value-if-null)
示例:赛车游艇的打印类型和生产年份(如果存在)
SELECT Y.TYPE, NVL(Y.PRDYEAR, 'UNKNOWN')
FROM T_YACHT Y WHERE Y.CLASS = 'RACING'
示例:获取生产年份超过 2000 年的所有游艇
SELECT * FROM T_YACHT Y WHERE
NVL(Y.PRDYEAR,TO_TIMESTAMP('01-01-0001','DD-MM-YYYY'))
> TO_TIMESTAMP('01-01-2000','DD-MM-YYYY')
对于你的第二个困难:使用 GROUP BY\CASCADING-SQL\DISTINCT\NVL
例子:看看有多少种赛艇
SELECT Y.TYPE, COUNT(Y.ID) AS YACHT_TYPE
FROM T_YACHT Y
WHERE Y.CLASS = 'RACING'
GROUP BY Y.TYPE
关于algorithm - 如何在层次结构中定位数据项位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14453659/
我正在尝试弄清楚如何将一些数据从手机同步到 Android Wear 设备,并且我已经阅读了 developer.android.com 上关于数据项的文章,但是我仍然不清楚究竟如何使用它们。具体来说
$("selector").data("name", null); console.log($("selector").data("name")); 这将打印未定义。 有没有办法在元素的 jQuery
我使用 LINQ 从 CheckBoxList 控件中检索选中的项目: 这里是 LINQ: IEnumerable allChecked = (from ListItem item in Ch
在尝试为 C 堆栈构建测试平台时,我遇到了如何正确显示它的问题。我已经检查了六本书,它们都有一种将堆栈插入堆栈或从堆栈弹出的方法,但没有一本示例说明您如何实际使用这些例程。谁能告诉我模式,这样我就可以
我尝试在 AppEngine 中使用 urlfetch 将 POST 数据发送到服务器。其中一些 POST 数据项具有相同的名称,但具有不同的值。 form_fields = { "data":
我有以下情况(使用 KendoUI): 我有一个绑定(bind)到数据源的网格。当我在网格中选择一行时,我会调用其“change”事件来让所选的 dataItem e 通过其他 HTML 元素显示其值
我基本上是在构建一个快速而肮脏的类(class)目录,其中包含多个层次类别以及属于不同级别的这些类别的类(class)。 在旧的实现中,每个主要类别都有自己的 HTML 页面,与该类别相关的所有类(c
我是 MVC 和 ASP.NET 的新手,希望学习一些东西,所以我正在尝试制作一些简单的应用程序来学习来龙去脉。 好吧,我正在尝试让一个下拉框显示一个图书列表,它会在其中显示图书的标题,但会发布 bo
此行为导致我的项目出现问题。这是正在发生的事情的简化版本。我想了解为什么会发生这种情况,以及如何避免这种情况。我已将 vue 加载到我的网站头部: 这是 Vue 对象: vueObject = ne
我是一名优秀的程序员,十分优秀!