6.1 分治算法
1
合併排序的時間複雜度是O()
A.n
B.nlogn
C.n^2
D.logn
正確答案:B
2
分治法的適用條件是( )。
A.問題可以分解爲規模較小的子問題
B.小規模子問題可解
C.子問題可合併爲問題的解
D.子問題相互獨立
正確答案:A、B、C、D
3
分治法的設計思想是大事化小,各個擊破,分而治之。
A.√
B.×
正確答案:A
4
每次都將問題分解爲原問題規模的一半進行求解,稱爲二分法
A.√
B.×
正確答案:A
5
分治法一般在每一層遞歸上有分解、解決、合併三個步驟
A.√
B.×
正確答案:A
6
減治法是把一個問題轉化成一個子問題來解決,從子問題的解得到原問題的解。
A.√
B.×
正確答案:A
7
分治法將原問題分解爲若干個規模較小、相互獨立、完全相同的子問題。
A.√
B.×
正確答案:B
6.2 分治類型
1
減治法常見的形式有()
A.減一個常量
B.減一個常量因子
C.減可變規模
D.減合併時間
正確答案:A、B、C
2
二分法子問題獨立而不相似的情況可以轉化爲相似子問題求解
A.√
B.×
正確答案:A
3
二分法子問題不獨立的情況可以計算,但計算量大,一般使用動態規劃計算。
A.√
B.×
正確答案:A
4
N個元素排序的時間複雜度不可能是線性時間。
A.√
B.×.
正確答案:B
5
任何基於元素比較的排序算法的時間複雜度>=élogn!ù= Q(nlogn)
A.√
B.×
正確答案:A
6.3 減少子問題個數
1
二分搜索算法將分治的2個子問題減少爲1個,時間複雜度由n降低爲logn
A.√
B.×
正確答案:A
2
大整數乘法將分治的四個子問題減少爲2個,時間複雜度由n2降低爲n
A.√
B.×.
正確答案:B
3
Strassen矩陣乘法將分治的8個子問題減少爲7個,時間複雜度由n3降低爲n^log7
A.√
B.×
正確答案:A
4
減少子問題的個數,可以降低分治算法的時間複雜度。
A.√
B.×
正確答案:A
5
存在O(n2.376 )時間的矩陣乘法分治算法
A.√
B.×
正確答案:A
6.4 改進分治的均衡度
1
改進分治的均衡度,就是減少時間複雜度函數T(n)=aT(n/b)+f(n) 中的()值。
A.a
B.b
C.f(n)
D.n
正確答案:B
2
隨機快速排序的時間是O(n^2)
A.√
B.×
正確答案:B
3
給定n個元素,找其中位數的時間是O(n)
A.√
B.×
正確答案:A
4
給定n個元素,使用分治算法找k小元素,如果保證分治的兩個子數組中最小的數組是原數組的ε倍,時間複雜度可以由nlogn降低爲n. 0<ε<1.
A.√
B.×
正確答案:A
6.5 減少合併的時間
1
減少合併時間,就是減少時間複雜度函數T(n)=aT(n/b)+f(n) 中的()值。
A.a
B.b
C.f(n)
D.n
正確答案:C
2
最接近點對問題的時間複雜度爲()
A.n
B.nlogn
C.n^2
D.logn
正確答案:B
3
最接近點對問題將合併的時間從n2減少爲n,從而將算法的時間複雜度由n減少爲nlogn。
A.√
B.×
正確答案:A
4
計數逆序問題將合併計數逆序的時間由n2減少爲n,從而將算法的時間複雜度由n2減少爲nlogn。
A.√
B.×
正確答案:A