Questions tagged «randomized-algorithms»

有关其行为不仅取决于其输入而且还取决于随机数源的算法的问题。

1
如何证明随机播放算法的正确性?
我有两种方法可以按随机顺序生成项目列表,并想确定它们是否同样公平(公正)。 我使用的第一种方法是构造元素的整个列表,然后对其进行随机播放(例如Fisher-Yates随机播放)。第二种方法更多是一种迭代方法,该方法使列表在每次插入时都保持乱序。在伪代码中,插入函数为: insert( list, item ) list.append( item ) swap( list.random_item, list.last_item ) 我对展示这种特殊混洗的公平性感兴趣。使用此算法的优点是足够的,即使稍微不公平也可以。要决定,我需要一种评估其公平性的方法。 我的第一个想法是,我需要以这种方式计算可能的总排列与一组最终长度可能的总排列。但是,我对如何计算该算法产生的排列有些困惑。我也不能确定这是最好的还是最简单的方法。

4
接受随机比较器的排序算法
通用排序算法通常将一组数据进行排序,并使用一个比较器函数来比较两个单独的元素。如果比较器是顺序关系¹,则算法的输出是排序的列表/数组。 我想知道哪种排序算法实际上可以与不是顺序关系的比较器一起使用(特别是在每次比较时都返回随机结果的比较器)。所谓“工作”,是指他们继续返回其输入的排列并以其通常引用的时间复杂度运行(而不是总是降级为最坏的情况,或者陷入无限循环,或者缺少元素)。结果的顺序将是不确定的。更好的是,当比较器是投币游戏时,所得排序将是均匀分布。 从我粗略的脑力计算来看,似乎可以使用合并排序并保持相同的运行时成本并产生合理的随机排序。我认为,诸如快速排序之类的东西会退化,可能无法完成,也不公平。 如随机比较器所述,还有哪些其他排序算法(合并排序除外)可以工作? 作为参考,比较器是一个顺序关系,如果它是一个适当的函数(确定性)并且满足顺序关系的公理: 它是确定性的:compare(a,b)对于特定的对象a,b总是返回相同的结果。 它是可传递的: compare(a,b) and compare(b,c) implies compare( a,c ) 它是反对称的 compare(a,b) and compare(b,a) implies a == b (假设所有输入元素都是不同的,那么自反性就不是问题。) 随机比较器违反所有这些规则。但是,有些比较器不是顺序关系而是随机的(例如,它们可能只违反一个规则,并且仅针对集合中的特定元素)。

6
我们可以使用无理数(如π和e)生成随机数吗?
,和等无理数在小数点后具有唯一且不可重复的序列。如果我们从这样的数字中提取第个数字(其中是调用该方法的次数),并按原样制作一个数字,我们是否不应该得到一个完美的随机数生成器?例如,如果我们使用,和,则第一个数字是123,第二个数字是471,下一个数字是184,依此类推。ππ\piËee2–√2\sqrt{2}ñnnñnn2–√2\sqrt{2}Ëeeππ\pi

3
可证明更快的随机算法在P中的问题
中是否存在任何问题,这些问题使随机算法超过了确定性算法的下限?更具体地讲,我们知道任何针对?这里表示由随机TM决定的语言集,在f(n)个步骤中具有恒定边界(一侧或两侧)错误。PP\mathsf{P}kkkP Ť 我中号È(˚F (Ñ ))˚F (Ñ )DTIME(nk)⊊PTIME(nk)DTIME(nk)⊊PTIME(nk)\mathsf{DTIME}(n^k) \subsetneq \mathsf{PTIME}(n^k)PTIME(f(n))PTIME(f(n))\mathsf{PTIME}(f(n))f(n)f(n)f(n) \ mathsf {P}内的随机性会给我们买任何东西PP\mathsf{P}吗? 明确地说,我正在寻找一种差异是渐近的(最好是多项式,但我会采用多元对数),而不仅仅是一个常数。 在最坏的情况下,我正在渐进地寻找算法。具有更高预期复杂度的算法不是我想要的。我指的是RP或BPP中的随机算法,而不是ZPP。

1
追踪运动目标的算法
假设我们有一个黑匣子,我们可以查询和重置它。当我们复位,状态的被设定为在从所述一组随机选择的均匀的元素其中是固定的并且已知的用于给定。为了查询,提供了的元素(猜测),返回的值为(f_S-x)\ mod n。另外,该状态F_S的˚F被设定为值F_S” = F_S \ PMķ,其中ķ从均匀地选择随机fffffffSfSf_Sfff{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}nnnffffffxxx{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}˚F 小号 ˚F ˚F ' 小号 = ˚F 小号 ± ķ ķ { 0 ,1 ,2 ,。。。,⌊ Ñ / 2 ⌋ - (( ˚F 小号 - X )(fS−x)modn(fS−x)modn(f_S - x) \mod nfSfSf_Sffff′S=fS±kfS′=fS±kf_S' = f_S …

1
是否有O(n log n)算法可简化4D线?
用于简化行的Ramer-Douglas-Peucker算法具有最坏情况的运行时间。对于适当分布的随机输入,它具有期望的运行时复杂度。在2D模式下,还有其他算法的运行时复杂度为最差,其计算结果与Ramer-Douglas-Peucker算法完全相同。由于这些算法基于“路径(凸)壳”数据结构,因此是否可以将其推广到4D线尚不清楚。O (n log n )O (n log n )Ø (ñ2)O(n2)O(n^2)Ø (ñ 日志n )O(nlog⁡n)O(n \log n)Ø (ñ 日志n )O(nlog⁡n)O(n \log n) 对于4D线,是否有一个(随机的)算法具有(预期的)运行时间(与输入无关)?您可以假设欧几里得距离和整体绝对公差。Ø (ñ 日志n )O(nlog⁡n)O(n \log n)

4
用有偏向的模子模拟公平的模子
给定一个偏向芯片,如何均匀地生成范围内的随机数?模子面的概率分布是未知的,所知道的是每个面的概率都为非零,并且所有抛出的概率分布都是相同的(特别是,抛出是独立的)。这是带有不公平死亡的公平结果的明显概括。NNN[1,N][1,N][1,N] 用计算机科学的术语来说,我们有一个代表死角的预言片:使得为非零且独立于。我们正在寻找一个确定性算法其通过参数化(即可向呼叫),使得。该算法必须以概率1终止,即概率使得多于到呼叫必须收敛到作为。D:N→[1,N]D:N→[1,N]D : \mathbb{N} \to [1,N]pi=P(D(k)=i)pi=P(D(k)=i)p_i = P(D(k)=i)kkkAAADDDAAADDDP(A()=i)=1/NP(A()=i)=1/NP(A()=i) = 1/N一种一种AññnddD000n → ∞ñ→∞n\to\infty 对于(使用有偏差的硬币模拟硬币翻转产生的公平硬币),有一种众所周知的算法:ñ= 2ñ=2N=2 重复“翻转两次”,直到两次掷出的结果不同((头,尾)或(尾,头))。换句话说,循环直到k = 0 ..∞ķ=0 ..∞k = 0..\inftyd (2 ķ + 1 )≠ d (2 ķ )d(2ķ+1个)≠d(2ķ)D(2k+1) \ne D(2k) 如果最后一对翻转是(头,尾),则返回0,如果是(尾,头),则返回1。换句话说,返回,其中是终止循环的索引。D(2k)D(2k)D(2k)kkk 从有偏的模型制作无偏的骰子的一种简单方法是使用硬币翻转无偏方法来构建一个公平的硬币,并通过拒绝采样来构建一个公平的骰子,如序列无偏中所述。但是,这是否最优(对于概率分布的通用值)? 具体来说,我的问题是:什么是需要的算法最小预期呼叫到Oracle的数量?如果一组可达到的期望值是开放的,那么下界是什么?向该下界收敛的一类算法是什么? 如果不同的算法家族对于不同的概率分布是最优的,那么我们将重点放在几乎公平的骰子上:我正在寻找一种算法或一种算法家族,对于表示。∀i,∣∣pi−1/N∣∣<ϵ∀i,|pi−1/N|<ϵ\forall i, \bigl|p_i - 1/N\bigr| \lt \epsilonϵ>0ϵ>0\epsilon \gt 0

2
随机快速排序的优点是什么?
在他们的著作随机化算法, Motwani和拉加打开与他们的RandQS功能的说明引入-随机快速排序-其中所述枢轴,用于将所述组分成两个部分,是随机选择。 一段时间以来,我一直在绞尽脑汁(虽然动力不足),但是我无法看到该算法比每次简单地选择中间元素(索引而不是大小)有什么优势。 我想我看不到这是什么:如果初始集合是按随机顺序排列的,那么在集合中随机位置拾取元素和在固定位置拾取元素之间有什么区别? 有人可以简单地启发我吗?

1
迷失于“单向”音乐会
您和一位朋友在一场音乐会上失去了对方,也无法确定你们中的哪一位遥遥领先。形式上,每个坐标都位于某个整数坐标处,并且只能朝更高的坐标走或停留在原处。 假设您和您的朋友使用完全相同的算法(不,您可能不会说“ if(name ==“ R B”)做某事:)),并且两个人之间的初始距离是xxx(不是知道)。 在您和您的朋友见面之前,最小化预期步行距离的算法是什么? 您可能会假设您的朋友和您自己都以相同的恒定速度运动。 一个简单的算法示例如下: 在阶段(从0开始nnn000): 向右走步wp 13n3n3^n或等待3n个时间单位,否则。1212\frac{1}{2}3n3n3^n 要查看此算法使朋友的概率是1相遇考虑在阶段发生的事情。即使那是在朋友X领先一步走到总是和对方总是留在地方,两者之间的距离将是: X + 1 + 3 + 9 + ... + 3 日志3 X = 2 X + X - 1(log3x+1)(log3⁡x+1)(\log_3 x+1)xxxx+1+3+9+…+3log3x=2x+x−12≤3xx+1+3+9+…+3log3⁡x=2x+x−12≤3xx+1+3+9+\ldots+3^{\log_3 x}=2x+\frac{x-1}{2}\leq 3x 因此,在次迭代,其选择步行,将覆盖的距离的朋友3 日志3 X + 1 = 3 X,因此,以概率1log3x+1log3⁡x+1\log_3 x+13log3x+1=3x3log3⁡x+1=3x3^{\log_3 x+1}=3x,后面的朋友会追上他们,并会面。1414\frac{1}{4} 一个简单的优化(以减少步行距离)将是,而不是步行步,而是步行c x步,其中c表示为: 2 + …


2
随机算法分类
来自维基百科,关于随机算法 一个具有区分算法使用随机输入减少的预期运行时间或内存使用情况,但总是有一个正确的结果在有限时间终止,并且 概率算法其中,根据不同的随机输入,有机会产生错误结果(蒙特卡罗算法)或通过发出失败或失败终止信号未能产生结果(拉斯维加斯算法)的结果。 我想知道第一种“ 算法 ”如何使用随机输入来减少预期的运行时间或内存使用率,但是总是在有限的时间内以正确的结果终止? 它和可能无法产生结果的拉斯维加斯算法之间有什么区别? 如果我理解正确,则概率算法和随机算法不是同一概念。概率算法只是一种随机算法,另一种是那些使用随机输入来减少预期的运行时间或内存使用量,但总是在有限的时间内以正确的结果终止的算法?

1
随机选择
随机选择算法如下: 输入:一个数组,其中包含(为简单起见,是不同的)数字和一个Ñ ķ ∈ [ Ñ ]AAAnnnk∈[n]k∈[n]k\in [n] 输出:该“等级的元素”(即,一个在位置如果进行了排序)甲ķ 甲kkkAAAkkkAAA 方法: 如果有一个元素,则将其返回AAA 随机均匀地选择一个元素(“枢轴”)ppp 计算集合和- [R = { 一个∈ 甲:一&gt; p }L={a∈A:a&lt;p}L={a∈A:a&lt;p}L = \{a\in A : a < p\}R={a∈A:a&gt;p}R={a∈A:a&gt;p}R = \{a\in A : a > p\} 如果,返回的等级元素。ķ 大号|L|≥k|L|≥k|L| \ge kkkkLLL 否则,返回等级元素[Rk−|L|k−|L|k - |L|RRR 我被问到以下问题: 假设,那么您正在寻找中位数,并将 设为常数。在第一次递归调用中,包含中位数的集合的大小最大为的概率是多少?α &Element; (1 / 2 ,1 …

2
调度问题的这种特殊情况是否可以在线性时间内解决?
爱丽丝(Alice)是一名学生,在接下来的几周里要完成很多作业。每一项家庭作业都需要她一天的时间。如果每个项目都错过了截止日期,那么每个项目都有一个截止日期,并且会对她的成绩产生负面影响(假设为实数,仅假设可比性,则获得加分)。 编写一个函数,该函数给出了(截止日期,成绩影响)列表,该时间表列出了在哪一天进行作业的时间表,以最大程度地减少对她的成绩造成的负面影响。 所有作业都必须最终完成,但是如果她错过了某个项目的截止日期,那么上交多晚都没关系。 在替代公式中: ACME公司希望向客户供水。他们都住在一条上坡路。ACME在这条街上分布着几口井。每口井可容纳一名顾客的水。客户出价要提供的金额不同。水只下坡。通过选择供应哪些客户来最大化收入。 我们可以使用存储桶排序对截止期限进行排序(或者假设我们已经按截止期限进行了排序)。 如果我们首先按降级影响进行排序,则可以使用贪婪算法轻松解决该问题。该解决方案不会比O(n log n)好。 受到中位数中位数和随机线性最小生成树算法的启发,我怀疑我们也可以在(随机化的)线性时间内解决我的简单调度/流程问题。 我在寻找: (潜在随机化)线性时间算法 或者替代地,认为不可能有线性时间 作为垫脚石: 我已经证明,仅知道在截止日期之前可以完成哪些项目,就足以在线性时间内重建完整的计划。(这种见解是我仅询问证书的第二种提法的基础。) 一个简单的(积分!)线性程序可以对这个问题进行建模。 使用该程序的对偶性,如果还为对偶程序提供了解决方案,则可以在线性时间内检查候选提议的解决方案是否最优。(两个解都可以用线性位数表示。) 理想情况下,我想在仅使用坡度影响之间比较而不在此处假设数字的模型中解决此问题。 对于这个问题,我有两种方法-一种基于使用截止日期和影响的挖掘,另一种类似于QuickSelect的方法,其基于选择随机枢轴元素并按影响对项目进行划分。两者都具有迫使O(n log n)或更坏的性能的最坏情况,但是我无法构造一个简单的特殊情况来降低两者的性能。

3
头尾之间的差异
考虑无偏硬币的nnn翻转序列。令HiHiH_i表示在第一个iii翻转中看到的超过头的数量的绝对值。定义H=maxiHiH=maxiHiH=\text{max}_i H_i。证明E[Hi]=Θ(i√)E[Hi]=Θ(i)E[H_i]=\Theta ( \sqrt{i} )和E[H]=Θ(n−−√)E[H]=Θ(n)E[H]=\Theta( \sqrt{n} )。 这个问题出现在Raghavan和Motwani撰写的“随机化算法”的第一章中,因此上面的陈述也许有基本的证明。我无法解决它,所以我将不胜感激。

1
推断优化类型
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z =&gt; x var x; Z =&gt; let x = undefined in Z x = y; Z =&gt; let x = y in Z if x then T else F; Z =&gt; if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

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.