Questions tagged «algorithms»

算法是定义明确的问题解决方案的一系列明确定义的步骤。如果您的问题与算法的设计和分析有关,请使用此标签。

2
时钟页面替换算法-现有页面
在模拟时钟页面替换算法时,当内存中已存在一个引用时,时钟指针是否仍会增加? 这是一个例子: 4个插槽,使用时钟页面替换算法 参考列表:1 2 3 4 1 2 5 1 3 2 4 5 初始列表如下所示: -> [1][1] [2][1] [3][1] [4][1] 下一个要插入的引用将是1,然后是2。指针在1之后,2之后是否仍指向1?换句话说,插入5后,时钟将如下所示: -> [5][1] [2][0] [3][0] [4][0] ?

1
查找两个节点之间的k最短路径
给定加权有向图和权重函数,通常可以使用Dijkstra算法获得最短路径。我感兴趣的是如何获取最短路径,最短路径,依此类推。G = V,EG=V,EG=V,Ed(u ,v )d(u,v)d(u,v)2ñ d2nd2^{nd}3[R d3rd3^{rd} 问题: 是否有一种有效的算法来获取加权图中两个节点之间的第i条最短路径? 是否有一种有效的算法来获取加权图中两个节点之间的k最短路径? 可以选择任意一个答案,尽管我想知道对第二个问题的答案是否可以比对第一个问题的答案的调用效率更高。ķkk


2
同行评分设计-选择图表以获取准确的排名/评分
背景。我正在编写一些半自动分级的代码,并使用对等分级作为分级过程的一部分。一次给学生提供成对的论文,并且学生可以选择一个滑块,选择哪个更好,哪个更好。例如,滑块可能看起来像这样: A---X-B 根据同级评分的结果,对论文进行排名,然后由老师对最高X%和最低X%进行评分,并根据此结果自动计算所有论文的分数。我已经想出了进行排名/评分过程的方法。该部分效果很好。 我的问题。我应该如何选择要给学生的论文对? 模拟表明,我们需要对一篇论文进行至少3次同等评分,以获得准确的排名。因此,每篇论文应至少出现在为同行评分而提出的三对中。 我们可以将其视为图问题。将论文视为节点。每条边代表在同级评分过程中呈现的一对论文。上面的准确性结果表明,每个节点(或大多数节点)的度数应至少为3。我应该使用哪种图形?我应该如何生成要在同行评等中使用的图表? 挑战之一是,如果图中有聚类,这将使同级评分不正确。例如,我们不想让高质量的论文相对于高质量的论文进行同行评等,因为那样会使歪曲同行评议的结果。 你会推荐什么? 我认为可以使用如下所示的无向图来建模此问题: 首先选择度数最小的节点,然后将其与下一个最小的节点链接 继续,直到您的平均学位至少为3 最大化节点连接 减少派系数量 这是一个好方法吗?如果不是,您会推荐什么呢?

3
多边形中的随机采样
我想在多边形中采样均匀一致的点... 如果采样大量,则如果它们具有相同的面积,它们将很可能落入两个区域。 如果它是一个正方形,这将是非常简单的,因为我将[0,1]中的两个随机数作为我的坐标。 我拥有的形状是规则的多边形,但我希望它适用于任何多边形。 /programming/3058150/how-to-find-a-random-point-in-a-quadrangle

4
生成随机DFA的好的算法是什么?
我正在生成随机DFA,以在其上测试DFA减少算法。 我现在使用的算法如下:对于每个状态,对于字母中的每个符号,将到某个随机状态。每个状态具有成为最终状态的相同概率。Ç δ (q ,C ^ )qqqCccδ(q,c )δ(q,c)\delta (q, c) 这是生成无偏DFA的好方法吗?另外,此算法不会生成调整DFA(没有过时状态的DFA),因此我想知道是否有更好的方法来生成随机DFA,以某种方式确保它是调整过的?


3
找出是谁来买羊角面包
一个团队决定每天早上有人应给每个人带羊角面包。每次都不应该是同一个人,因此应该有一个系统来确定下一个轮到谁。这个问题的目的是确定一种算法,以确定明天将把羊角面包带给谁。 约束,假设和目标: 谁来带羊角面包,将在前一天下午确定。 在任何一天,都会有人不在。该算法必须选择当天要出席的人。假设所有缺勤都是提前一天知道的,因此可以在前一个下午确定新月形面包的购买者。 总体而言,大多数人都在大多数时间都在场。 为了公平起见,每个人都应该购买羊角面包,其次数应与其他人一样多。(基本上,假设每个团队成员都有相同的钱用于羊角面包。) 为了减轻花名册的无聊感,最好具有一些随机性或至少感知到的随机性。这不是一个硬性约束:它更多是一种审美判断。但是,同一个人不应连续两次被选中。 带羊角面包的人应该事先知道。因此,如果人P在D日带上羊角面包,那么应该在人P所在的前一天确定这一事实。例如,如果总是在前一天确定了羊角面包的携带者,那么应该是前一天在场的人之一。 团队成员的数量足够少,以至于存储和计算资源实际上是无限的。例如,该算法可以依靠过去曾带谁羊角面包的完整历史记录。每天在快速PC上进行几分钟的计算就可以了。 这是一个现实问题的模型,因此,如果您认为这些假设可以更好地模拟场景,则可以自由地挑战或完善这些假设。 产地:找出谁去购买羊角由弗洛里安Margaine。我在这里的重新表述有稍微不同的要求。

1
分析Quicksort时要使用什么措施
我试图理解为什么使用Lomuto分区和固定枢轴的快速排序在随机生成的输入上表现不稳定,但总体效果不佳。我在想,即使输入是随机生成的,序列也可能有很多顺序,但是我不确定如何测量序列中的混乱程度。我曾考虑过使用反演次数,但从另一个问题中我看到,我问这不是一个很好的方法。 我怀疑我的随机序列具有很多“顺序”的原因是,随机化枢轴解决了性能问题。但是从理论上讲,这些所谓的“随机”输入序列应该不存在任何性能问题。

2
二维峰发现复杂度(MIT OCW 6.006)
在43:30的MIT OCW 6.006的朗诵视频中, 给定一个具有列和行的矩阵,二维峰查找算法(其中一个峰是大于或等于其相邻邻居的任何值)被描述为:m×n米×ñm \times nA一个Am米mnñn 注意:如果在通过来描述列时出现混淆,我表示歉意,但这是背诵视频描述它的方式,我尝试与该视频保持一致。这让我非常困惑。nñn 选择中间的列 // 具有复杂性n/2ñ/2n/2Θ(1)Θ(1个)\Theta(1) 求列的最大值// 具有复杂度, 因为一列中有行Θ (米)米n/2ñ/2n/2Θ(m)Θ(米)\Theta(m)m米m 检查水平。最大值的行邻居,如果大于,则找到一个峰值,否则以递归// 具有复杂度T (n / 2 ,m )T(n/2,m)Ť(ñ/2,米)T(n/2, m)T(n/2,m)Ť(ñ/2,米)T(n/2,m) 然后要评估递归,背诵教练说 T(1,m)=Θ(m)Ť(1个,米)=Θ(米)T(1,m) = \Theta(m)因为它找到最大值 Ť(n ,m )= Θ (1 )+ Θ (m )+ T(n / 2 ,m )(E1)(E1)Ť(ñ,米)=Θ(1个)+Θ(米)+Ť(ñ/2,米) T(n,m) = \Theta(1) + \Theta(m) + T(n/2, m) \tag{E1} 我了解下一部分,在视频中的52:09,他说要把当作常量,因为行数永不改变。但我不知道这如何导致以下产品:米米m …


1
查找字符串中最长的重复模式
我正在寻找一种有效的算法来查找字符串中最长的重复模式。 例如,考虑以下数字字符串: 5431428571428571428571428571427623874534。 如您所见,142857142857是最长的模式,它在此字符串中重复了两次(至少两次)。 重复的字符串不应该包含任何想法,而应该不是蛮力的?

1
固定长度的类似决策树的特征选择,以最大程度地降低平均搜索性能
我有一个复杂的查询用于搜索数据集以查找。每个查询花费平均时间因此线性搜索的总时间为。我可以将查询分解为更简单的子查询q_i并找到 和其中。每个子查询计算速度都快得多,因此总的来说,找到然后使用来找到更快。QQQSSS吨吨·&| S | ħ 约 = { 小号∈ 小号| ∀ q Ĵ(小号)为真} ħ 确切 ⊆ ħ 约q 我ħ 约 Q ħ 确切Hexact={s∈S∣where Q(s) is True}Hexact={s∈S∣where Q(s) is True}H_\text{exact} = \{s \in S \mid \text{where $Q(s)$ is True}\}tttt⋅|S|t⋅|S|t\cdot |S|Happrox={s∈S∣∀qj(s)is True}Happrox={s∈S∣∀qj(s)is True}H_\text{approx} = \{s\in S \mid \forall q_j(s) \text {is True}\}Hexact⊆HapproxHexact⊆HapproxH_\text{exact}\subseteq …

1
加权有向无环图中可能具有负权重的最小st割
我遇到了以下问题: 给定一个带实值边权重且有两个顶点s和t的有向无环图,请计算最小切角。 对于一般图形,这是NP难的,因为可以通过简单地反转边权重来微不足道地减小最大割(如果我错了,请纠正我)。 DAG的情况如何?最小切割(或最大切割)可以在多项式时间内求解吗?它是NP难的吗?如果是,是否有任何已知的近似算法? 我试图在此方面找到工作,但未能(也许我只是在搜索中使用了错误的关键字),所以我希望有人可能对此有所了解(或找到)。

3
有效地为数组中的每个元素查找较小元素的数量
我陷入了这个问题: 给定的阵列一个AA第一ñnn自然数随机地置换,阵列乙BB构造,使得 B (k )B(k)B(k)是从元件的数量甲(1 )A(1)A(1)至A (k − 1 )A(k−1)A(k-1)其是小于A (k )A(k)A(k)。 i)给定一个一个A,您可以在O (n )时间内找到吗? ii)给定B,您可以在O (n )时间内找到A吗?乙乙BO (n )O(ñ)O(n)乙乙B一个一个AO (n )Ø(ñ)O(n) 在此,B (1 )= 0乙(1个)=0B(1) = 0。对于一个具体的例子: ∣∣∣一个乙8040301个07321个966454∣∣∣|一个8431个72965乙000031个644|\begin{vmatrix} A & 8 & 4 & 3 & 1 & 7 & 2 & 9 & 6 & 5 \\ B …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.