问题标签 [generalization]

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 投票
9 回答
46615 浏览

algorithm - 缓存失效——有通用解决方案吗?

“计算机科学只有两个难题:缓存失效和命名事物。”

菲尔·卡尔顿

是否有使缓存无效的通用解决方案或方法;知道条目何时过时,从而保证始终获得最新数据?

例如,考虑一个getData()从文件中获取数据的函数。它根据文件的最后修改时间对其进行缓存,每次调用时都会对其进行检查。
然后添加第二个函数transformData()来转换数据,并在下次调用该函数时缓存其结果。它不知道文件 - 你如何添加如果文件被更改,这个缓存变得无效的依赖关系?

您可以在getData()每次调用时transformData()调用并将其与用于构建缓存的值进行比较,但这最终可能会非常昂贵。

0 投票
8 回答
21190 浏览

oop - 抽象和泛化有什么区别?

我知道抽象是指把一些更具体的东西变得更抽象。那东西可能是数据结构或过程。例如:

  1. 数据抽象:矩形是正方形的抽象。它专注于正方形有两对相对边的事实,而忽略了正方形的相邻边相等的事实。
  2. 过程抽象:高阶函数map是过程的抽象,它对值列表执行一些操作以生成全新的值列表。它专注于过程循环遍历列表的每个项目以生成新列表的事实,并忽略对列表的每个项目执行的实际操作。

所以我的问题是:抽象与泛化有何不同?我正在寻找主要与函数式编程相关的答案。但是,如果在面向对象编程中有相似之处,那么我也想了解这些。

0 投票
1 回答
1338 浏览

class - UML 类图问题

如果我有一个系统来组织飞行员和他们为工作而飞行的飞机的时间表。还有一个负责安排日程的经理。但经理也是一名飞行员。我需要两个单独的用户子类作为飞行员 + 经理吗?或者例如在试点课程中使用 isManager 的属性会更实用吗?或者经理会是飞行员的孩子吗?

如果 schdule 类是system的组合,那么创建新计划的方法是否必须在 system 类中?

0 投票
4 回答
34 浏览

python - 按数组中的对象引用特定参数?

所以我真的不知道如何表达这个问题,或者我确定我可以谷歌搜索它。

我有一个功能,例如:

而且我希望能够调用它 3 次并一次只传递一个参数,例如:

但是在我的真实代码中,我需要大量地概括这一点并有更多的参数,所以我希望能够按照以下方式做一些事情:

python有什么办法可以做到这一点吗?

0 投票
0 回答
84 浏览

matlab - 使用数学家规则避免循环中的计数器

我试图找到一个数学公式来避免计数器对任何循环(第一个元素、最后一个元素和增量的任何数字)逐步递增 1。

示例 1(一个 for 循环):

MIN=第一个元素,MAX=最后一个元素,HOP=增量(变量 i)

带计数器:

无计数器:

示例 2(两个 for 循环):

MINI=第一个元素,MAXi=最后一个元素,HOPi=增量(变量 i)

MINj=第一个元素,MAXj=最后一个元素,HOPj=增量(变量 j)

带计数器:

无计数器:

有两个for循环的c公式有什么简化吗?

用 k for 循环 c(k) 找到 c 的任何公式?

0 投票
2 回答
3064 浏览

c++ - 推广 Bresenham 算法高度八分圆

我正在尝试实现 Bresenham 算法,使其具有以下特性:

所以在我的主要,我测试了很多算法,比如:

或者

对于两个八分圆。

我还尝试了我们可以在维基百科中找到的内容,但没什么特别的。

我尝试实现的最后一个功能:

那么,有人知道任何解决方案吗?

0 投票
1 回答
499 浏览

uml - 如何记录泛化用例

我的用例图中有一个泛化。我如何为每个人编写规范。

0 投票
2 回答
865 浏览

expert-system - CLIPS 中事实集的泛化(尝试在多槽槽中找到匹配的槽值)

我正在尝试在 CLIPS 中做类似“事实概括”的事情(不确定哪个术语最能描述它),我不确定如何以最佳方式做到这一点。

考虑这种情况。我有一组由以下模板描述的事实:

Coraxidcause 和 changeidcause 组合是一种关键 - 这两个字段的组合是唯一的。changeinfo 和 coraxinfo 在插槽中有一些符号值(我在每个插槽中的值总是不超过 10 个)

所以我有一些简单的事实。我想要做的是找出 changeinfo 和 coraxinfo 中哪些值相同并断言它们。例如,如果我有这些简单的事实:

我想断言这样的事实:

现在我写了这条规则:

问题是,如果我们回到前面提到的这 4 个事实,它会断言:

等等

我不需要所有这些“部分匹配”,我只需要完全匹配的部分 - (finalcause (coraxinfo 2 3) (changeinfo ab)),我不知道该怎么做。此外,当我有这样的事情时,会发生非常可怕的事情:

此时 CLIPS 引擎像无限循环一样进入 smth,LHS 列出所有可能的匹配:

等等

这需要很长时间(正如我之前提到的,我仍然不需要做我不需要的事情)。我是 CLIPS 的新手,所以我认为我错过了一些明显的东西,应该有一些方法来做我需要的事情。我将不胜感激有关如何执行此操作的任何帮助或建议。任何想法都会非常有用。

看起来我还没有澄清我到底想要什么。我需要在所有事实中找到所有可能的“匹配”,例如,如果我有这些事实:

我需要将此作为输出:

0 投票
2 回答
2094 浏览

clips - CLIPS - 在多槽字段中寻找随机槽之间的匹配

考虑这种情况。我有这样的模板:

我知道在 coraxinfo 插槽中,我将始终拥有不超过 14 个值(可能更少,但永远不会更多)。我现在也在 changeinfo multislot 中拥有不超过 13 个值。

我正在尝试编写一个规则,该规则将找到我将拥有的任何事实之间的所有可能匹配项。

例如:

我需要得到这个(每个多槽中的值顺序无关紧要):

现在我已经停止了这个功能:

这有点笨拙,但据我记得$?表示“零或更多”,所以即使我的字段少于我在搜索模式中指定的字段,它也应该可以工作。我在每个模式中最多使用 7 个多槽,因为最多有 14 或 13 个值意味着在最坏的情况下,多槽中的每一秒值都将与其他事实相匹配。

当我加载 deffacts CLIPS 中指定的事实时,问题会进入一种无限循环——它很长时间没有响应,所以我相信我的规则出错了。此外,这条规则应该会杀死引擎,以防我有几个几乎相同的事实,只有一个领域的差异。在这种情况下,它们之间会产生大量的匹配。知道我哪里错了吗?我将非常感谢任何建议。

更新。如果我们尝试通过一次向 coraxinfo 和 changeinfo 插槽添加一个值来构建(finalcause)事实的方法,那么我目前已停止使用以下两条规则:

在两个多槽中创建具有一个匹配值的初始 finalcause 事实:

如果我们有任何 finalcause 事实,我们会尝试检查其中的所有 multislot 值是否是 ?coraxmatchafter 值之前的所有内容的子集,以匹配 simplecause 事实并断言扩展的 finalcause。我相信这条规则应该能够在匹配简单原因时“跳过差距”。

我使用这些 deffacts 的规则(注意 deffacts 与上面的不同):

这里的问题是我希望它能够为 3 个匹配字段生成最终原因,但它只生成具有 2 个匹配字段的最终原因事实,我不明白为什么。难道它不应该注意到这三个事实属于第二条规则吗?

0 投票
1 回答
122 浏览

uml - 概念化:泛化与否?

我正在建模一个应用程序,它可以让用户寻找房地产。因此,它将成为一个网站,用户可以在其中查找房屋、公寓、城堡、场地、商店、停车场、办公室的出租和销售信息。据此,我在类图中犹豫不决。我应该从类 RealEstateProperty 中概括所有类型的房地产,还是应该只将其关联到一个 TypeOfRealEstate 类,知道例如“Ground”类型也可以作为房地产的基础房屋或城堡之类的财产。停车场也可以是房地产,也可以是房屋的停车场。

任何人都知道最好的方法是什么?提前致谢。