- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在家庭作业中,我们得到了一个叫做“七分搜索”的东西,它类似于二分搜索,但不是将数据结构减半,而是将其分割为 7 组。我们被要求通过编写递归方程并求解它来证明最坏情况下的运行时间在 BigTheta(log n) 中。
这是七次搜索的伪代码:
septenarySearch(L, s):
HELPER(L, 0, L.length-1, s)
HELPER(L, Lo, Hi, s):
if Hi - Lo + 1 > 7:
basic_group_size = floor((Hi - Lo + 1) / 7)
number_of_larger_groups = (Hi - Lo + 1) % 7
for i in 0 .. 6:
group_size = basic_group_size
if i < number_of_larger_groups:
group_size = group_size + 1
first_element_of_group = i*group_size
last_element_of_group = (i+1)*group_size - 1
if L[first_element_of_group] <= s <= L[last_element_of_group]:
return HELPER(L, first_element_of_group, last_element_of_group, s)
else:
for index in Lo .. Hi:
if s == L[index]:
return true
return false
我们还得到提示,考虑的元素数量递归调用HELPER中至少有1/7传入的范围(Lo和Hi之间),且数量不超过1/4。
我很确定其中一个递归方程是 T(n) = c + T(n/7)
其中 c
是某个常数值,我认为这让我 BigO(log n)。如果我试图证明 Big Theta,我也需要证明 BigOmega(log n),对吗?我如何找到 BigOmega 是什么?
我确定 1/4 应该用于查找 BigOmega,但不确定如何执行此操作(甚至不知道 1/4 从何而来)。
最佳答案
给出的提示:
Number of elements in recursive call >= n/7 (+)
Number of elements in recursive call <= n/4 (++)
因此,算法运行时间的下限和上限由下式给出
Lower bound:
Assume all recursive calls contains n/7 number of elements from
range passed to previous call call (n elements).
Recurrence relation:
T_L(n) = T(n/7) + c (i)
Upper bound:
Assume all recursive calls contains n/4 number of elements from
range passed to previous call call (n elements).
Recurrence relation:
T_U(n) = T(n/4) + c (ii)
您可以通过展开递归来解决 (i)
和 (ii)
,这将直接为您提供 Big-Θ 关系:
现在你被问及最坏情况下的复杂度,在这种情况下 T(n) = T_U(n)
。因此,最坏的情况是T(n) ∈ Θ(log_4 n)
。
关于java - 你如何找出七次搜索的大 O 和大 Omega?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35028268/
这个问题在这里已经有了答案: What exactly does big Ө notation represent? (7 个答案) 关闭 3 年前。 Big theta 表示它既是大 o 又是大
我正在研究算法,但是找到时间复杂度的计算对我来说并不是那么容易,很难记住什么时候使用 log n、n log n、n^2、n^3、2n 等,我的疑问是关于如何在计算复杂性时考虑这些输入函数,它们是否有
对于这个问题,我认为它是真的,因为我认为这个问题基本上是在问 f(n) 大于或等于 g(n) 然后是 2^(f(n)) 大于或等于 2^(g(n)) 因此,如果我们采用 f(n) = 2n 和 g(n
这个证明可以用一个omega来完成: a : Z b : Z
我在求解证明时遇到问题。其中 t(n) = n0。但我不确定如何将其应用于证明以及如何操纵方程中的常数来找到 c 和 n0 并证明 t(n) 是 Omega(n^1.6)。 t(n) = (n-3lo
在尝试跨 4 个不同的断点设置正确的列宽以按我的需要进行设置时遇到问题。 当我使用 span-columns(3, 12) 时,我希望最大尺寸的总宽度为 300px,每个内容之间有 20px 的填充。
大欧米茄(Ω)的定义是这样的。 函数 f(n) = Ω(g(n)) ,当且仅当存在正常数 c 和 n0 使得 f(n) >= c*g(n) 对于所有 n,n>=n0. 这里有一个定理。 我想证明这一点
我有一个算法,我正在尝试找出解决最大子数组和问题的该算法的最佳情况(渐近表示法): -- Pseudocode -- // Input: An n-element array A of numbers
我有公式 a(n) = n * a(n-1) +1 ; a(0) = 0 如果没有主定理,我如何从中得到 Omega、Theta 或 O 符号,或者有没有人有一个很好的网站来理解解释 最佳答案 Mas
如果一个算法有两个子算法,对于给定的输入,子算法 A1 是最好的情况,子算法 A2 是最坏的情况。我怎样才能找到整体算法的复杂性?我的意思是 Ω(N) + O(N)=?我知道如果算法按顺序执行,则总体
使用 jeet.gs 我有两个类,每个类占用其父容器总宽度的一半。 像这样的东西(手写笔符号): .wrapper .alpha .beta col(1/2) 现在,当我像这样写一些
我目前正在设计一种布局,需要在移动设备、平板电脑和台式机上使用不同的布局。 移动 - 堆叠 平板电脑 - 两列布局 桌面 - 三列 我发现我的两列布局一直坚持到我的桌面布局,但事实并非如此。平板电脑
我目前正在使用 Bourbon Neat。我需要 .posts__post 在平板电脑上跨越 6 列中的 3 列 然后 2 of 6在桌面上及以上。但是我发现我的桌面媒体查询不工作,平板电脑查询仍然通
在家庭作业中,我们得到了一个叫做“七分搜索”的东西,它类似于二分搜索,但不是将数据结构减半,而是将其分割为 7 组。我们被要求通过编写递归方程并求解它来证明最坏情况下的运行时间在 BigTheta(l
使用 Susy 时,您可以在行的最后一项上放置一个“omega”标志以移除其 margin-right。例如,假设我们有一堆元素需要布置在一个 12 列的网格上: ... ... I'm the la
我正在阅读有关 Lambda-Cube 的信息,并且我对 System F-omega 特别感兴趣,它允许“类型运算符”,即类型取决于类型。这听起来很像 GHC 的类型族。例如 type family
我正在尝试使用 Omega 在 Coq 中进行证明。我花了很多时间在上面,但什么也没想到。不得不说我是Coq的新手,对这种语言不是很放心,也没有太多经验。但我正在努力。 这是我要证明的代码: Requ
当我运行 alpha 时,我在构造上有五个项目在它上面我得到以下结果没有任何错误 psych::alpha(construct, na.rm = TRUE, ti
谁首先证明了所有基于比较的排序至少是 Omega(n lg n)?这个下界有名字吗?例如SomeGuysLastName 定理? 最佳答案 我的“Introduction to Algorithms”
我知道大 oh 表示上限,omega 表示下限,但我看到的大多数地方都只有大 oh 符号。 例如。在线性搜索算法中,最坏的情况是大 oh(n)。但是,搜索没有。可以在第一位找到。所以不行。输入的数量是
我是一名优秀的程序员,十分优秀!