ค้นหา
  
Search Engine Optimization Services (SEO)

การค้นหาแบบทวิภาคอย่างมีเอกรูป

การค้นหาแบบทวิภาคอย่างมีเอกรูป (อังกฤษ: Uniform binary search) เป็นการค้นหาแบบทวิภาค (binary search) ชนิดหนึ่งซึ่งลดขนาดการทำงานของการค้นหาแบบปกติลง ขั้นตอนวิธีนี้ได้ถูกคิดค้นขึ้นโดย โดนัลด์ คนูธ และได้เขียนแนวคิดและการพิสูจน์ประสิทธิภาพไว้ในหนังสือ The Art of Computer Programming,Volume 3

ลักษณะการทำงานโดยรวมของการค้นหาแบบทวิภาคอย่างมีเอกรูป จะคล้ายๆกับการค้นหาแบบทวิภาคแบบธรรมดา แต่จะต่างกันที่การเลือกจุดพิจารณาว่าจะคิดจากตัวแปร การค้นหาแบบทวิภาคอย่างมีเอกรูป ได้ทำการคำนวณค่า ที่จะพิจารณาไว้ก่อนค้นหานั้น จะทำให้ความเร็วทำงานเพิ่มขึ้นโดยเฉลี่ยประมาณ 17% เทียบกับการค้นหาแบบทวิภาคแบบธรรมดา แต่ประสิทธิภาพเชิงเวลาที่คำนวณได้จะมีค่าเท่ากันกับ ประสิทธิภาพเชิงเวลาของการค้นหาแบบทวิภาพแบบธรรมดา นั่นคือ O(log n) ดังนั้นขั้นตอนวิธีแบบการค้นหาแบบทวิภาคอย่างมีเอกรูป จึงไม่ค่อยได้ถูกนำไปใช้กันมากนัก ทั้งนี้อาจเกิดจากการเขียนโค้ดที่ยุ้งยากกว่า แต่ได้ประสิทธิภาพเชิงเวลาเท่ากับการค้นหาแบบทวิภาพแบบธรรมดา

การค้นหาแบบทวิภาคอย่างมีเอกรูป จะมีแนวคิดคล้ายๆกับการค้นหาแบบทวิภาค แต่จะต่างกันตรงที่ วิธีค้นหาในการค้นหาแบบทวิภาคจะเสมือนการหักครึ่งการพิจารณาไปเรื่อยๆ จนสามารถสรุปได้ว่าเจอตัวที่ค้นหาหรือไม่ ส่วนการค้นหาแบบทวิภาคอย่างมีเอกรูปจะไม่ได้ทำการหักครึ่งค้นหา แต่ลำดับการค้นหาจะเป็นไปตามค่าที่เราคำนวณไว้ตั้งแต่ก่อนค้นหาแล้ว

สำหรับขั้นตอนวิธีทำงานของ Uniform Binary Search เริ่มต้นจากการสร้าง อาเรย์สำรวจ ขึ้นมาไว้เก็บดัชนีที่จะใช้กระโดดไปพิจารณาในอาเรย์ข้อมูลของเรา โดยตั้งค่าเริ่มต้นให้เป็น 0 ทั้งหมด จากนั้นเราจะสร้างฟังก์ชันขึ้นมา ซึ่งฟังก์ชันนี้จะมีหน้าที่ในการเติมค่าดัชนีลงในอาเรย์สำรวจ เพื่อเป็นการบอกระยะของตำแหน่งที่จะพิจารณาถัดไปเมื่อเทียบกับตำแหน่งปัจจุบัน โดยจะมีวิธีการเติมค่าของอาเรย์สำรวจ ตามตัวอย่างโค้ดภาษา C ด้านล่าง

อธิบายการทำงานของฟังก์ชันได้ดังนี้ power เป็นตัวแปรไว้เก็บค่า 2^n โดยกำหนดตัวแปร n ให้เริ่มที 0 ส่วนตัวแปร i เป็น ดันชีชี้ตำแหน่งของ อาเรย์สำรวจและภายในวงวนจะทำการเติมค่าใน อาเรย์สำรวจ ไปเรื่อยๆ จนกว่าจะเติมด้วยเลข 0 จึงหยุดวงวน (ซึ่งแสดงว่าระยะกระโดดเพื่อไปยังตำแหน่งอื่นเป็น 0 ก็หมายถึงไม่ต้องกระโดแล้ว) ส่วนวิธีเติมเลขลงไปใน อาเรย์สำรวจ นั้นได้มาจากทางสูตรคณิตศาสตร์ที่อยู่ในหนังสือ the art of computer programming หน้า 415 สูตรที่ 6 DELTA[j]=?N+2j?12j?,for 1?j??lg?N?+2{\displaystyle {\text{DELTA}}[j]=\left\lfloor {\frac {N+2^{j-1}}{2^{j}}}\right\rfloor ,\qquad {\text{for }}1\leq j\leq \lfloor \lg N\rfloor +2} ซึ่งได้มาจากการพิสูจน์และสรุปผลทางคณิตศาสตร์ เพื่อประกันว่าการกระโดดแบบนี้จะพิจารณาข้อมูลภายในอาเรย์ข้อมูลของเราได้อย่างครบถ้วนแล้ว

ส่วนต่อมาจะเป็นส่วนฟังก์ชัน ของการค้นหาข้อมูลในอาเรย์ ข้อมูลของเราโดยลักษณะการทำงานทั่วๆไปจะเหมือนกันการค้นหาแบบทวิภาคแบบธรรมดา แต่จะเปลี่ยนจากการคำนวณค่าของการกระโดด จากตัวแปรที่ชื่อ left,right ที่รับเข้ามา เป็นการอ้างอิงระยะการกระโดดจากอาเรย์สำรวจ ซึ่งมีผลทำให้ใช้เวลาเร็วกว่า Binary Search ซึ่งตัวอย่างโค้ดภาษา C การทำงานของฟังก์ชันนี้ มีดังนี้

อธิบายการทำงานของฟังก์ชัน ใน 2 กรณีแรก คือการเจอข้อมูลที่ค้นหาจะคืนค่า ตำแหน่งที่พบ ส่วนถ้าไม่เจอข้อมูลใดเลย (ภายในอาเรย์สำรวจ จะเก็บค่า 0 คือ ไม่ต้องกระโดดต่อแล้ว) ก็จะคืน -1 ส่วนกรณีอื่นๆก็จะทำงานเหมือนกับ Binary Search ปกติ กล่าวคือ จะเทียบค่าที่ต้องการค้นหากับ ค่าของอาเรย์ข้อมูลว่ามากกว่าหรือน้อยกว่าข้อมูลในช่องที่กำลังพิจารณาอยู่ ก็ให้เลื่อนตำแหน่งพิจารณาไปพิจารณาช่างที่หาไปทางซ้ายหรือทางขวา ซึ่งมีระยะห่างจากตำแหน่งปัจจุบันเท่ากับค่าที่เก็บในอาเรย์สำรวจ


 

 

รับจำนำรถยนต์ รับจำนำรถจอด

เบอร์ลินตะวันออก ประเทศเยอรมนีตะวันออก ปฏิทินฮิบรู เจ้า โย่วถิง ดาบมังกรหยก สตรอเบอร์รี ไทยพาณิชย์ เคน ธีรเดช อุรัสยา เสปอร์บันด์ พรุ่งนี้ฉันจะรักคุณ ตะวันทอแสง รัก 7 ปี ดี 7 หน มอร์ มิวสิค วงทู อนึ่ง คิดถึงพอสังเขป รุ่น 2 เธอกับฉัน เป๊ปซี่ น้ำอัดลม แยม ผ้าอ้อม ชัชชัย สุขขาวดี ประชากรศาสตร์สิงคโปร์ โนโลโก้ นายแบบ จารุจินต์ นภีตะภัฏ ยัน ฟัน เดอร์ไฮเดิน พระเจ้าอาฟงซูที่ 6 แห่งโปรตุเกส บังทันบอยส์ เฟย์ ฟาง แก้ว ธนันต์ธรญ์ นีระสิงห์ เอ็มมี รอสซัม หยาง มี่ ศรัณยู วินัยพานิช เจนนิเฟอร์ ฮัดสัน เค็นอิชิ ซุซุมุระ พอล วอล์กเกอร์ แอนดรูว์ บิ๊กส์ ฮันส์ ซิมเมอร์ แบร์รี ไวต์ สตาญิสวัฟ แลม เดสมอนด์ เลเวลีน หลุยส์ที่ 4 แกรนด์ดยุคแห่งเฮสส์และไรน์ กีโยม เลอ ฌ็องตี ลอเรนโซที่ 2 เดอ เมดิชิ มาตราริกเตอร์ วงจรรวม แจ็ก คิลบี ซิมโฟนีหมายเลข 8 (มาห์เลอร์) เรอัลเบติส เฮนรี ฮัดสัน แคว้นอารากอง ตุ๊กกี้ ชิงร้อยชิงล้าน กันต์ กันตถาวร เอก ฮิมสกุล ปัญญา นิรันดร์กุล แฟนพันธุ์แท้ 2014 แฟนพันธุ์แท้ 2013 แฟนพันธุ์แท้ 2012 แฟนพันธุ์แท้ 2008 แฟนพันธุ์แท้ 2007 แฟนพันธุ์แท้ 2006 แฟนพันธุ์แท้ 2005 แฟนพันธุ์แท้ 2004 แฟนพันธุ์แท้ 2003 แฟนพันธุ์แท้ 2002 แฟนพันธุ์แท้ 2001 แฟนพันธุ์แท้ 2000 บัวชมพู ฟอร์ด ซาซ่า เดอะแบนด์ไทยแลนด์ แฟนพันธุ์แท้ปี 2015 แฟนพันธุ์แท้ปี 2014 แฟนพันธุ์แท้ปี 2013 แฟนพันธุ์แท้ปี 2012 ไทยแลนด์ก็อตทาเลนต์ พรสวรรค์ บันดาลชีวิต บุปผาราตรี เฟส 2 โมเดิร์นไนน์ ทีวี บุปผาราตรี ไฟว์ไลฟ์ แฟนพันธุ์แท้ รางวัลนาฏราช นักจัดรายการวิทยุ สมเด็จพระสันตะปาปาปิอุสที่ 7 แบร์นาร์แห่งแกลร์โว กาอึน จิรายุทธ ผโลประการ อัลบาโร เนเกรโด ปกรณ์ ฉัตรบริรักษ์ แอนดรูว์ การ์ฟิลด์ เอมี่ อดัมส์ ทรงยศ สุขมากอนันต์ ดอน คิง สมเด็จพระวันรัต (จ่าย ปุณฺณทตฺโต) สาธารณรัฐเอสโตเนีย สาธารณรัฐอาหรับซีเรีย เน็ตไอดอล เอะโระเก คอสเพลย์ เอวีไอดอล ช็อคโกบอล มุกะอิ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
จำนำรถราชบุรี รถยนต์ เงินด่วน รับจำนำรถยนต์ จำนำรถยนต์ จำนำรถ 23301