- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想用 Java 创建一个程序,它会向用户提出一些问题并报告一些结果。这很像一项调查。为了更好地解释问题,请考虑以下示例:假设当前有 4 个可用问题,例如 Qa、Qb、Qc 和 Qd。每个问题都有许多可能的选项:
=> 问题 A 有 4 个可能的选项 a1、a2、a3 和 a4。
=> 问题 B 有 3 个可能的选项 b1, b2 和 b3
=>问题C有5个可能的选项c1,c2,c3,c4和c5
=> 问题 D 有 2 个可能的选项 d1 和 d2
此外,还有一些可用的结果将根据用户在上述问题中的回答进行报告。假设有 5 个这样的结果,分别称为 R1、R2、R3、R4 和 R5。每个结果都有许多特征。这些特性实际上是对上述问题的回答。更准确地说:
=> R1的特征是{Qa=a4,Qb=b2,Qc=c2,Qd=d1}的集合这表示 R1 通过 a1 选项与 Qa 相关,通过 b2 选项与 Qb 相关,依此类推
=> R2: {Qa = a3, Qb = b3, Qc = c3, Qd = d2}
=> R3: {Qa = a4, Qb = b1, Qc = c1, Qd = d2}
=> R4: {Qa = a2, Qb = b2, Qc = c5, Qd = d1}
=> R5: {Qa = a1, Qb = b3, Qc = c4, Qd = d2}
假设用户 U 提供了以下问题的答案{Qa = a4, Qb = b1, Qc = c1, Qd = d1}
该程序的目的是报告更接近用户答案的结果以及接近程度的百分比。例如,由于没有任何结果与用户回答的结果 100% 匹配,因此程序应报告尽可能多的答案匹配的结果(高于某个阈值,例如 50%)。在这种特定情况下,程序应报告以下结果:
=> R3 有 75%(因为 4 个问题有 3 个匹配项)
=> R1 有 50%(因为 4 个问题有 2 个匹配项)
请注意,R4 有一个匹配项(因此为 25%),而 R2 和 R5 根本没有匹配项(因此为 0%)。实现上述程序的主要问题是有很多问题(大约 30 个),每个问题都有很多答案(每个问题有 3-4 个答案)。我不知道可以检索更接近用户答案的结果的有效算法。请注意,这些结果的存储方式根本不重要。您可以假设结果存储在关系数据库中,并且使用 SQL 查询来检索它们。
我能想到的唯一解决方案是执行详尽搜索,但这根本没有效率。换句话说,我正在考虑执行以下操作:
=> 首先尝试检索与用户答案完全匹配的结果:{Qa = a4, Qb = b1, Qc = c1, Qd = d1}
=> 如果不存在结果,则更改问题的选项(例如 Qa)并重试。例如尝试:{Qa = a1, Qb = b1, Qc = c1, Qd = d1}
=> 如果仍然没有,则尝试 Qa 的其余可能选项,例如 a2、a3
=> 如果仍然没有任何结果,则给 Qa 初始用户答案(即 a4),然后转到 Qb 做类似的事情。例如尝试这样的事情:{Qa = a4, Qb = b2, Qc = c1, Qd = d1}
=> 如果在对所有问题一一尝试所有可能的选项后有任何结果,请尝试更改问题组合的选项。例如尝试同时更改两个问题的选项(例如 Qa 和 Qb):{Qa = a1, Qb = b2, Qc = c1, Qd = d1}
=> 然后尝试三个问题的组合等等......
显然上述算法在处理大量问题时会非常慢。有没有比上述算法更有效的已知算法或启发式算法?
提前致谢
最佳答案
“只有”30 个问题?
那么下面的“愚蠢”算法可能比任何高度“智能”和复杂的算法都要快。
iterate over characteristics
score = 0
iterate over questions
if questions's answer is right in current characteristic
score++
然后添加一个跟踪最大值和匹配特征的变量,您就设置好了。
运行时间是特征大小 * 问题大小
,而您所描述的算法可能具有指数运行时间,最重要的是编程和执行都复杂得多(由于效果作为分支预测错误)
关于实现类似调查程序的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16081280/
是否有任何工具可以检查现有的 squashfs 图像并找出每个文件的压缩率? 如果它可以帮助我估计一个巨大的可执行文件中静态链接符号的闪存使用情况,则可以加分。 最佳答案 7zip 程序可以提供这些信
我有自定义调查,在 RootWeb.Properties 中有到期日期。如何在到期日期后将所有想要回复调查的用户(单击“回复调查”或使用指向 NewForm.aspx 的直接链接)重定向到包含一些自定
是否可以通过查询字符串发送答案?像这样的东西: HTTP://survey/1?ASW1=test 最佳答案 是的,请参阅手册 - https://manual.limesurvey.org/Work
我问了一个question关于如何在调试时调查 XMLWriter 对象的内容。我正在尝试检查从内存流创建的 XmlReader 对象的内容,其方式与链接问题的答案中给出的方式类似。但是我收到 Una
如何在调试时查看完全填充的 XmlWriter 对象的 XML 内容。我的 Silverlight 应用程序不允许实际写入文件和检查内容。 最佳答案 让它写入 MemoryStream或 String
我今天才开始使用 AB。阅读一些新的 AB 教程,并尝试尝试对我的网站进行负载测试。 使用它几次后,我收到了大量失败的请求。你能解释一下失败的请求是什么意思吗?我该如何针对此问题进行更多调查? 示例
当我运行 project 时与 valgrind我收到错误报告。如果我不使用 Valgrind,那么程序看起来是正常的,但是当 Valgrind 报告它时,我确定有问题。 ==21286== Inva
我在一页上有 36 个常见问题解答和答案。每个答案都包含在一个可折叠元素中。我的目标是让用户在常见问题解答中单击是或否,然后我通过 GTM/GA 跟踪该值。但是,当我当前单击是或否时,该值显示“感谢您
我们在 aws 上的 hdfs 之上有一个 spark 集群,具有 2 个核心节点和 1 个主节点。最近我发现所有作业都失败了,因为两个核心节点上的磁盘都已满。经过进一步调查发现: /data/var
我正在构建一个 Web 应用程序,它基本上允许“管理员”创建具有任意数量和组合的表单元素(复选框、组合框、文本字段、日期字段、单选组等)的表单。 “用户”将登录此应用程序并完成管理员创建的表格。 我们
想象一下这样的情况。您获得了一些遗留代码或获得了一些新框架。您需要尽快调查并了解如何使用此代码。没有机会向以前的开发人员寻求帮助。什么是最佳实践/方法/方式/步骤/工具(首选 .NET Framewo
我正在尝试从在 MacOS 上运行的 docker 容器访问 host-x.com,但它失败了: $ docker run ubuntu:latest \ /bin/bash -c \ '
我最近研究了 WinForms 应用程序中的一些 .NET“内存泄漏”(即意外的、挥之不去的 GC 根对象)。加载然后关闭一个巨大的报告后,即使经过几次 gen2 收集,内存使用量也没有按预期下降。假
如何允许具有读取权限的用户回复 Sharepoint 2013 调查? 我尝试过仅读取访问权限,但无法获取“回复调查”链接。我还尝试了“贡献访问”选项,这一次,我得到了“回复调查”按钮。当我尝试填写调
如何允许具有读取权限的用户响应 Sharepoint 2013 调查? 我试过只有读取权限,但无法获得“回复调查”链接。我也尝试了“贡献访问”选项,这次,我得到了“响应调查”按钮。当我尝试填写调查详细
目前我正在深入研究 CLR 并尝试找到我的托管对象的适当大小。 我有两个简单的类型: XClass class XClass { public XStruct StructField
我正在调查在由 mesos marathon 编排的 docker 容器中运行的 java 应用程序的内存不足问题。 容器设置为2GB内存 JVM 堆显式设置为最小 1Gb 和最大 1.5GB 持续测
在使用/FA 选项编译使用此虚拟类的代码时 class A { public: A() {} int Initialize() { return 0; } }
我正尝试在 Symfony 3.2.4 和 PHP 5.6.28 中为我的应用程序创建动态调查/表单包 我有 3 个实体:调查/问题/答案 第一步是为每个用户创建一个调查。问题必须与相关的答案字段一起
我正在尝试将一个简单的调查嵌入到弹出窗口中并将其与我的应用程序集成。弹出窗口需要包含一个调查问题,该问题将使用两个选项单选按钮捕获用户的响应。一旦用户选择单选选项,我需要触发一个事件以启用提交按钮。单
我是一名优秀的程序员,十分优秀!