Finding A Mediocre Player笔记

本文探讨了MediocrePlayer问题,即在一个数集中找到既不在最大i个元素也不在最小j个元素中的数。文章介绍了F.Yao提出的算法及其复杂度,并针对特定情况提出了优于Yao算法的确定性和随机性算法。

Introduction

一个数集A中的一个元素a称为\((i,j)\)元素,如果a即不在最大的i个元素中,也不在最小的j个元素中。Mediocre Player问题就是在输入数集中找到一个\((i,j)\)元素。F.Yao给出了一个非常简单的方法,在A中任意选择出i+j+1个元素,然后在这些元素中应用一个第\(i+1\)大元素的选择算法。这个算法的复杂度只与i和j有关,那么这个算法是不是最好的算法呢,Yao证明了在i=1时,这个算法确实是最好的。对于所有的i,j,这个算法是不是最好,并且它是不是与n无关的目前仍然是开放问题。这篇文章针对两种特殊的情况给出了优于Yao的算法的算法(一个是确定性算法,一个是随机算法)。

Al-1

考虑\((i,j)=(\alpha n,(1-2\alpha)n-1)\),其中\(\alpha <1/3\)
算法就是简单的将A中的元素两两配对比较,将它们中的较大元素选出,然后用选择算法选出这些元素的第\(\alpha n+1\)大元素。算法的正确性很容易验证。选择算法则利用Dor and Zwick的\(\alpha\)分位选择算法,对于一个固定的数\(l\),选择算法需要的比较次数\[g(\alpha,l)=(1+(l+2)(\alpha+\frac{1-\alpha}{2^l}))\]对l进行优化,并且考虑到l是整数,则\(l=\lceil log\frac{1}{\alpha}+loglog\frac{1}{\alpha} \rceil\),最小比较次数为\[f(\alpha) = min(g(\alpha,l),g(\alpha,l+1))\]记Yao算法的比较次数为\(c_{Yao}\),Al-1的比较次数为\(c_{A-1}\)\[c_{A-1}=\frac{1}{2}(1+f(2\alpha)) \] \[c_{Yao}=(1-\alpha)f(\frac{\alpha}{1-\alpha})\]一些数值上的计算可以知道,Al-1确实比较次数要更少。

利用Schnohage给出的下界估计\(C(P)\geq \lceil log(n!/\mu(P))\),对于此处mediocre player问题特殊的偏序计算出\(\mu(P)=i! j! (n-i-j-1)!binom{n}{i+j+1}\),则\[C(P)\geq \lceil log\frac{(i+j+1)!}{i!j!}\]然而这个界非常的弱,因为右边的式子至多只有i+j,这个界可以直接由偏序的连通性得出(利用A.C.Yao关于偏序产生问题复杂性论文的Lem2).实际上,上面给出的算法经过实验,n的系数严格大于1,即\(C(P)>n\)

(未完)

转载于:https://www.cnblogs.com/mathematic-offering/p/10770936.html

<think>好的,我需要帮助用户找到一个IT相关的示例代码。用户提到了引用[1]中的内容,涉及BuildContext和Element对象,这看起来和Flutter框架有关。首先,我应该回忆一下Flutter中BuildContext的作用,通常它在构建Widget时使用,而Element是树中的实际对象。 接下来,用户需要示例代码。我应该找一个展示如何在Flutter中使用BuildContext的简单例子。StatelessWidget的build方法会自动接收context参数,这个context就是当前的BuildContext。比如,在获取主题数据或导航时常用到。 然后,我需要确保代码符合用户的要求:行内公式用$...$,独立公式用$$...$$,但这里可能不需要数学公式。重点是正确的代码示例和引用。记得在回答末尾添加相关问题,可能涉及BuildContext的其他用途、Element的关系或常见错误。 最后,检查引用是否正确,用户提供的引用[1]是关于BuildContext和Element的关系,所以在提到context时添加引用标识。确保所有内容用中文,结构清晰,分步骤说明,并自然地融入示例。</think>在Flutter应用开发中,`BuildContext`常用于访问Widget树中的元素或服务。以下是获取主题颜色的示例代码: ```dart class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { // 通过BuildContext获取主题颜色 final colorScheme = Theme.of(context).colorScheme; return Container( color: colorScheme.primary, child: Text('使用主题色', style: TextStyle(color: colorScheme.onPrimary)), ); } } ``` 此代码展示了`BuildContext`在获取主题配置时的典型用法,其中`Theme.of(context)`通过上下文定位最近的Theme组件[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值