You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Searching/Ternary Search/README.md
+45-2Lines changed: 45 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,49 @@
1
1
# Ternary Search
2
2
3
-
**Ternary search** algorithm is a technique in computer science for finding the minimum or maximum of a [unimodal](https://en.wikipedia.org/wiki/Unimodality) function. A ternary search determines either that the minimum or maximum cannot be in the first third of the domain or that it cannot be in the last third of the domain, then repeats on the remaining two-thirds.
4
-
Unimodal functions are functions that, have a single highest value.
3
+
**Ternary search** algorithm is a technique in computer science for finding the minimum or maximum of a [unimodal](https://en.wikipedia.org/wiki/Unimodality) function. A ternary search determines either that the minimum or maximum cannot be in the first third of the domain or that it cannot be in the last third of the domain, then repeats on the remaining two-thirds.
4
+
Unimodal functions are functions that, have a single highest/lowest value.
5
5
6
+
Suppose we have a function f(x) with only one max point between A and B. We want to find the point (M, f(M)) where f(M) is the maximum between A and B.
7
+
8
+
We split the range from A to B into three intervals. At every iteration of our algorithm, we can narrow down the range by 1/3 and we have a new interval. At every step, we can remove one of the intervals based on the following:
9
+
10
+
Let m<sub>1</sub> by 1/3 of the way from A and B and let m<sub>2</sub> be 2/3 of the way from B.
11
+
12
+

13
+
14
+
**Case 1 :** f(m1) < f(m2)
15
+
16
+
***Case 1.1:** m1 < m2 < M, so m1 < M
17
+
18
+

19
+
20
+
***Case 1.2:** m1 < M < m2, so m1 < M
21
+
22
+

23
+
24
+
***Case 1.3:** M < m1 < m2 is not possible.
25
+
26
+
Thus if f(m1) < f(m2), then m1 < M, so we only need to search from m1 to B.
27
+
28
+

29
+
30
+
**Case 2:** f(m1) >= f(m2)
31
+
32
+
***Case 2.1:** m1 < M < m2, so M < m2
33
+
34
+

35
+
36
+
***Case 2.2:** M < m1 < m2, so M < m2
37
+
38
+

39
+
40
+
***Case 2.3:** m1 < m2 < M is not possible
41
+
42
+
Thus, if f(m1) >= f(m2), then M < m2, so we only need to search from A to m2.
43
+
44
+

45
+
46
+
Therefore, based on the values of f(m1) and f(m2), we can always remove a third of the range. We can keep repeating this until the range is within a very small threshold/absolute Precision such as 0.0001.
6
47
7
48
#### Binary Search vs. Ternary Search
8
49
Binary search looks a zero or a specific value in case of monotonic(Non-increasing or non-decreasing) input; ternary search is used to locate an extremum for unimodal(Having a single extremum) inputs.
@@ -15,3 +56,5 @@ Binary search looks a zero or a specific value in case of monotonic(Non-increasi
0 commit comments