ค้นหา
  
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 ปกติ กล่าวคือ จะเทียบค่าที่ต้องการค้นหากับ ค่าของอาเรย์ข้อมูลว่ามากกว่าหรือน้อยกว่าข้อมูลในช่องที่กำลังพิจารณาอยู่ ก็ให้เลื่อนตำแหน่งพิจารณาไปพิจารณาช่างที่หาไปทางซ้ายหรือทางขวา ซึ่งมีระยะห่างจากตำแหน่งปัจจุบันเท่ากับค่าที่เก็บในอาเรย์สำรวจ


 

 

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

ปัญหาสามวัตถุ ฌอง ลารอง ดาเลมเบิร์ต อเล็กซิส คลาเราต์ พารัลแลกซ์ ฟรีดดริค เบสเซล กระจุกดาว เนบิวลา นิโคลัส หลุยส์ เดอ ลาซายล์ กล้องโทรทรรศน์แบบสะท้อนแสง กลศาสตร์ท้องฟ้า เซอร์ ไอแซค นิวตัน โยฮันเนส เคปเลอร์ เรอเนซองส์ นักดาราศาสตร์ วงรอบซารอส จันทรคราส ความเอียงของแกนโลก แบบจำลองแบบโลกเป็นศูนย์กลางจักรวาล ปีดาราศาสตร์สากล แบบจำลองแบบโลกเป็นศูนย์กลางของจักรวาล แบบจำลองแบบดวงอาทิตย์เป็นศูนย์กลางจักรวาล ตำแหน่งดาว นักดาราศาสตร์สมัครเล่น ดาราศาสตร์เชิงสังเกตการณ์ การเดินเรือดาราศาสตร์ การวัดตำแหน่งดาว จักรวาลวิทยาเชิงกายภาพ ชั้นบรรยากาศ วัตถุท้องฟ้า ทางช้างเผือก การวางเงื่อนไขแบบดั้งเดิม บุคลิกภาพ เซโรโทนิน โดพามีน จิตวิทยาภาษาศาสตร์ กลไกการป้องกันตนเอง สาขาวิชาจิตวิทยา คณะศิลปศาสตร์ มหาวิทยาลัยธรรมศาสตร์ คณะศิลปศาสตร์ มหาวิทยาลัยธรรมศาสตร์ องค์การศึกษาวิทยาศาสตร์และวัฒนธรรมแห่งสหประชาชาติ จิตวิทยากลุ่มเกสตัลท์ ไลพ์ซิจ จิตไร้สำนึก จิตวิเคราะห์ ซิกมันด์ ฟรอยด์ จิตแพทย์ ATC รหัส V ATC รหัส S ATC รหัส R ระบบทางเดินหายใจ สารกระตุ้น ยานอนหลับ ยากันชัก ยาระงับปวด ยาชาเฉพาะที่ ATC รหัส N เอ็นเซด ATC รหัส M ATC รหัส L ATC รหัส P ATC รหัส J การติดเชื้อ ATC รหัส H ยาคุมกำเนิด ATC รหัส G ATC รหัส D ไบล์แอซิดซีเควสแตรนต์ สแตติน ยาลดไขมันในเส้นเลือด แองกิโอเทนซินรีเซพเตอร์บล๊อคเกอร์ เอซีอีอินฮิบิเตอร์ แคลเซียมแชนแนลบล็อกเกอร์ เบต้า บล็อกเกอร์ ยาขับปัสสาวะ ยาลดความดัน ATC รหัส C ATC รหัส B เกลือแร่ ยาระบาย เอช2 รีเซพเตอร์แอนตาโกนิสต์ ยาลดกรด ATC รหัส A ทางเดินอาหาร ระบบจำแนกประเภทยาตามการรักษาทางกายวิภาคศาสตร์ การบำบัด ชีวเภสัชศาสตร์ เภสัชวินิจฉัย ร้านยา กากบาทเขียว คทางูไขว้ ถ้วยยาไฮเกีย ถ้วยตวงยา เรซิพี โกร่งบดยา เฉลว คณะเภสัชศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย ค.ศ. 1617 ค.ศ. 1240 สมเด็จพระจักรพรรดิฟรีดริชที่ 2 แห่งโรมันอันศักดิ์สิทธิ์ กาเลน ฮิปโปเครตีส

 

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
234
235
236
237
238
239
240
241
242
243
244
245
246
247
จำนำรถราชบุรี รถยนต์ เงินด่วน รับจำนำรถยนต์ จำนำรถยนต์ จำนำรถ 24717