5.9 Historical Notes and Further FindingsIn later chapters we will dis dịch - 5.9 Historical Notes and Further FindingsIn later chapters we will dis Việt làm thế nào để nói

5.9 Historical Notes and Further Fi

5.9 Historical Notes and Further Findings
In later chapters we will discuss several generalizations of sorting. Chapter 6 discusses priority queues, a data structure supporting insertions and removal of the
smallest element. In particular, inserting n elements followed by repeated deletion of
the minimum amounts to sorting. Fast priority queues result in quite good sorting al-
gorithms. A further generalization are the search trees introduced in Section 7, a data
structure for maintaining a sorted list that allows searching, inserting, and removing
elements in logarithmic time.
We have seen several simple, elegant, and efficient randomized algorithms in this
chapter. An interesting question is whether these algorithms can be replaced by de-
terministic ones. Blum et al. [26] describe a deterministic median selection algorithm
that is similar to the randomized algorithm from Section 5.5. This algorithm makes
pivot selection more reliable using recursion: It splits the input set into subsets of five
elements, determines the median of each subset by sorting the five-element subset,
then determines the median of the n/5 medians by calling the algorithm recursively,
and finally uses the median of the medians as the splitter. The resulting algorithm has
linear worst case execution time (we invite the reader to set up a recurrence for the
running time and to show that it has a linear solution), but the large constant factor
makes the algorithm impractical.
There are quite practical ways to reduce the expected number of comparisons re-
quired by quicksort. Using the median of three random elements yields an algorithm
with about 1.188n log n comparisons. The median of three medians of three-element

5.9 Historical Notes and Further Findings
125
subsets brings this down to ≈ 1.094n log n [20]. The number of comparisons can be
reduced further by making the number of elements considered for pivot selection
dependent on the size of the subproblem. Martinez and Roura [119] show that for a
√subproblem of size m, the median of Θ( m) elements is a good choice for the pivot.
With this approach, the total number of comparisons becomes (1 + o(1))n log n, i.e.,
matches the lower bound of n log n − O(n) up to lower order terms. Interestingly,
the above optimizations can be counterproductive. Although less instructions are ex-
ecuted, it becomes impossible to predict when the inner while-loops of quicksort are
aborted. Since modern, deeply pipelined processors only work efficiently when they
can predict the directions of branches taken, the net effect on performance can even
be negative [? ]. Therefore, [157] develops a comparison based sorting algorithm
that avoids conditional branch instructions. An interesting deterministic variant of
quicksort is proportion-extend sort [39].
A classical sorting algorithm of some historical interest is Shell sort [98, 163],
a generalization of insertion sort, that gains efficiency by also comparing nonadja-
cent elements. It is still open whether some variant of Shellsort achieves O(n log n)
average running time [98, 120].
There are some interesting techniques for improving external multiway merge-
sort. The snow plow heuristic [109, Section 5.4.1] forms runs of expected size 2M
using a fast memory of size M : Whenever an element is selected from the inter-
nal priority queue and written to the output buffer and the next element in the in-
put buffer can extend the current run, we add it to the priority queue. Also, the use
of tournament trees instead of general priority queues leads to a further improvement
of multiway merging [109].
Parallelism can be used to improve sorting very large data sets, either in the form
of a uni-processor using parallel disks or in the form of a multi-processor. Multiway
mergesort and distribution sort can be adapted to D parallel disks by striping, i.e.,
any D consecutive blocks in a run or bucket are evenly distributed over the disks.
Using randomization, this idea can be developed into almost optimal algorithms that
also overlaps I/O and computation [51]. The sample sort algorithm of Section 5.7
can be adapted to parallel machines [25] and results in an efficient parallel sorter.
We have seen linear time algorithms for highly structured inputs. A quite gen-
eral model, for which the n log n lower bound does not hold, is the word model.
In this model, keys are integers that fit into a single memory cell, say 32 or 64
bit keys, and the standard operations on words (bitwise-and, bitwise-or, addition,
. . . ) are available in constant time. In this model, sorting is possible in deterministic

time O(n log log n) [9]. With randomization even O n log log n is possible [196].
Flash sort [141] is a distribution-based algorithm that works almost in-place.
Exercise 107 (Unix spell checking). Assume you have a dictionary consisting of a
sorted sequence of correctly spelled words. To check a text, convert it to a sequence
of words, sort it, scan text and dictionary simultaneously, and output the words in
the text that do not appear in the dictionary. Implement this spell checker using unix
tools in a small number of lines of code. Can you do it in one line?
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
5.9 ghi chú lịch sử và những phát hiện thêm
trong chương sau đó chúng tôi sẽ thảo luận về một số chung chung của phân loại. Chương 6 thảo luận về ưu tiên hàng đợi, một cấu trúc dữ liệu hỗ trợ thêm vào và loại bỏ các
phần tử nhỏ nhất. Đặc biệt, chèn n phần tử tiếp theo loại bỏ lặp đi lặp lại
tối thiểu số tiền để phân loại. Nhanh chóng ưu tiên hàng đợi kết quả khá tốt phân loại al-
gorithms. Một tổng quát hơn nữa là cây tìm kiếm giới thiệu trong phần 7, dữ liệu một
cấu trúc cho việc duy trì một danh sách được sắp xếp cho phép tìm kiếm, chèn và xóa
yếu tố trong thời gian lôgarít.
chúng tôi đã thấy một số đơn giản, thanh lịch, và efficient ngẫu nhiên các thuật toán này
chương. Một câu hỏi thú vị là cho dù các thuật toán này có thể được thay thế bởi de-
terministic những người. Blum et al. [26] mô tả một thuật toán xác định trung bình chọn
mà là tương tự như các thuật toán ngẫu nhiên từ phần 5.5. Thuật toán này làm
trục lựa chọn đáng tin cậy hơn bằng cách sử dụng đệ quy: nó chia tách các đầu vào đặt vào tập hợp con của five
yếu tố, xác định trung vị của mỗi tập con bằng cách sắp xếp tập con five-yếu tố,
sau đó xác định trung bình của số trung vị n/5 bằng cách gọi thuật toán đệ quy,
và finally sử dụng trung bình của các số trung vị như splitter. Các thuật toán kết quả có
tuyến tính tồi tệ nhất trường hợp thực hiện thời gian (chúng tôi mời độc giả để thiết lập một tái phát cho các
chạy thời gian và cho thấy rằng nó có một giải pháp tuyến tính), nhưng các yếu tố liên tục lớn
làm cho các thuật toán không thực tế.
có những cách khá thực tế để giảm số lượng so sánh re - dự kiến
quired bởi hay Hoaresort. Sử dụng trung bình của ba yếu tố ngẫu nhiên sản lượng một thuật toán
với khoảng 1.188n đăng n so sánh. Trung bình của ba số trung vị của nguyên tố ba

5,9 ghi chú lịch sử và những phát hiện thêm
125
tập con mang lại điều này xuống ≈ 1.094n đăng n [20]. Số lượng so sánh có thể
giảm hơn nữa bằng cách làm cho số lượng các yếu tố xem xét để lựa chọn pivot
phụ thuộc vào kích thước của subproblem. Martinez và Roura [119] cho rằng đối với một
√subproblem kích thước m, trung vị của yếu tố Θ (m) là một lựa chọn tốt cho pivot.
với cách tiếp cận này, tổng số so sánh trở thành (1 o(1)) đăng nhập n n, i.e.,
matches ràng buộc thấp hơn của Nhật ký n n − O(n) lên đến thấp hơn đặt hàng điều khoản. Điều thú vị,
tối ưu hóa ở trên có thể được phản tác. Mặc dù ít hướng dẫn là ex-
ecuted, nó sẽ trở thành không thể dự đoán khi bên trong vòng thời gian hay Hoaresort
hủy bỏ. Kể từ khi hiện đại, bộ vi xử lý sâu pipelined chỉ làm việc efficiently khi họ
có thể dự đoán các hướng dẫn của chi nhánh thực hiện, hiệu ứng ròng trên hiệu suất có thể thậm chí
là tiêu cực [?]. Do đó, [157] phát triển một thuật toán phân loại so sánh dựa
mà tránh chi nhánh có điều kiện hướng dẫn. Một biến thể thú vị xác định của
hay Hoaresort tỷ lệ-mở rộng loại [39].
một thuật toán phân loại cổ điển của một số lợi ích lịch sử là vỏ loại [98, 163],
một tổng quát của chèn loại, mà thu efficiency bằng cách so sánh cũng nonadja-
trăm yếu tố. Đó là vẫn còn mở cho dù một số biến thể của Shellsort đạt được O (n log n)
trung bình chạy thời gian [98, 120].
Có một số kỹ thuật thú vị để cải thiện bên ngoài kết hợp multiway-
sắp xếp. Heuristic plow tuyết [109, phần 5.4.1] tạo thành tập dự kiến kích thước 2M
bằng cách sử dụng một bộ nhớ nhanh chóng của kích thước M: bất cứ khi nào một phần tử được chọn từ inter-
nal ưu tiên hàng đợi và ghi vào bộ đệm đầu ra và phần tử tiếp theo ở tại-
đặt bộ đệm có thể kéo dài chạy hiện tại, chúng tôi thêm nó vào hàng đợi ưu tiên. Ngoài ra, việc sử dụng
giải đấu cây thay vì tổng ưu tiên hàng đợi dẫn đến một cải tiến hơn nữa
của multiway hợp nhất [109].
xử lý song song có thể được sử dụng để cải thiện phân loại bộ dữ liệu rất lớn, hoặc là trong các hình thức
sử dụng song song đĩa có bộ xử lý uni trở thành một bộ xử lý đa. Multiway
mergesort và phân phối loại có thể được thích nghi với D song song đĩa bởi striping, i.e.,
bất kỳ khối D liên tiếp trong một chạy hoặc nhóm được phân phối đồng đều trên đĩa.
sử dụng ngẫu nhiên, ý tưởng này có thể được phát triển thành tối ưu gần như thuật toán mà
cũng trùng lặp I/O và tính toán [51]. Thuật toán sắp xếp mẫu của phần 9.2
có thể được thích nghi với song song máy [25] và kết quả trong một sorter song song efficient.
Chúng tôi đã thấy thời gian tuyến tính các thuật toán cho đầu vào có cấu trúc cao. Một gen khá-
eral mô hình, mà bị ràng buộc dưới n n đăng nhập không giữ, là mô hình từ.
trong mô hình này, phím là các số nguyên đó fit vào một tế bào duy nhất bộ nhớ, nói 32 hoặc 64
bit phím, và các hoạt động tiêu chuẩn trên các từ (bitwise- và, bitwise- hoặc, bổ sung,
...) có sẵn trong thời gian liên tục. Trong mô hình này, phân loại là có thể có trong xác định

thời gian O (n log log n) [9]. Với ngẫu nhiên thậm chí O n đăng nhập đăng nhập n có thể [196].
Flash loại [141] là một thuật toán phân phối dựa trên hoạt động gần như trong-nơi.
107 tập thể dục (Unix kiểm tra chính tả). Giả sử bạn có một từ điển bao gồm một
sắp xếp chuỗi các chữ viết là một cách chính xác. Để kiểm tra một văn bản, hãy chuyển nó sang một chuỗi
từ, sắp xếp nó, quét văn bản và từ điển đồng thời, và đầu ra từ trong
văn bản không xuất hiện trong từ điển. Thực hiện kiểm tra chính tả này bằng cách sử dụng unix
công cụ trong một số ít các dòng mã. Bạn có thể làm điều đó trong một dòng?
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
5.9 Lịch sử cần chú ý và phát hiện thêm
Trong chương sau chúng tôi sẽ thảo luận một số khái quát phân loại. Chương 6 thảo luận về hàng đợi ưu tiên, cấu trúc dữ liệu hỗ trợ chèn và loại bỏ các
phần tử nhỏ nhất. Đặc biệt, chèn n phần tử tiếp theo xóa lặp đi lặp lại của
số tiền tối thiểu để phân loại. Hàng đợi ưu tiên nhanh chóng cho kết quả khá tốt trong phân loại al-
các thuật toán. Một khái quát hơn nữa là những cây tìm kiếm được giới thiệu trong mục 7, một dữ liệu
cấu trúc cho việc duy trì một danh sách được sắp xếp cho phép tìm kiếm, chèn, và loại bỏ
các yếu tố trong thời gian logarit.
Chúng ta đã thấy một số thuật toán ngẫu nhiên đơn giản, thanh lịch, và hiệu quả trong này
chương. Một câu hỏi thú vị là liệu các thuật toán có thể được thay thế bởi de-
những người terministic. Blum et al. [26] mô tả một thuật toán trung bình lựa chọn xác định
tương tự như các thuật toán ngẫu nhiên từ Phần 5.5. Thuật toán này làm cho
lựa chọn trục đáng tin cậy hơn bằng cách sử dụng đệ quy: Nó chia tách các đầu vào thiết lập thành các tập con của năm
yếu tố, xác định trung bình của mỗi nhóm bằng cách phân loại các năm yếu tố tập hợp con,
sau đó xác định trung vị của n / 5 trung vị bằng cách gọi các thuật toán đệ quy ,
và cuối cùng là sử dụng trung bình của các trung vị là splitter. Các thuật toán kết quả có
tuyến tính thời gian tồi tệ nhất trường hợp thực hiện (chúng tôi mời người đọc để thiết lập một sự tái phát cho
thời gian chạy và để cho thấy rằng nó có một giải pháp tuyến tính), nhưng các yếu tố không đổi lớn
làm cho các thuật toán thực tế.
Có nhiều cách khá thực tế để giảm số lượng dự kiến so sánh lại
quired bởi Sắp xếp nhanh. Bằng cách sử dụng trung bình của ba yếu tố ngẫu nhiên mang lại một thuật toán
với khoảng 1.188n log n so sánh. Trung bình của ba trung vị của ba phần tử 5.9 Lịch sử cần chú ý và phát hiện thêm 125 tập con mang này xuống ≈ 1.094n log n [20]. Số lượng so sánh có thể được giảm hơn nữa bằng cách làm cho số lượng các yếu tố xem xét để lựa chọn trục phụ thuộc vào kích thước của bài toán con. Martinez và Roura [119] cho thấy rằng đối với một bài toán con √ kích thước m, trung bình của Θ (m) các yếu tố là một lựa chọn tốt cho các trục. Với phương pháp này, tổng số so sánh sẽ trở thành (1 + o (1)) n log n, tức là phù hợp với cận dưới của n log n - O (n) lên đến giảm số hạng bậc. Điều thú vị là, tối ưu hóa trên có thể phản tác dụng. Mặc dù hướng dẫn ít là cựu ecuted, nó trở nên không thể dự đoán khi bên trong trong khi-vòng của Sắp xếp nhanh được hủy bỏ. Từ hiện đại, bộ vi xử lý sâu sắc pipelined chỉ làm việc hiệu quả khi họ có thể dự đoán các hướng dẫn của các ngành thực hiện, ảnh hưởng thực về hiệu suất thậm chí có thể là tiêu cực [? ]. Vì vậy, [157] phát triển một so sánh dựa trên thuật toán phân loại , có thể tránh lệnh rẽ nhánh có điều kiện. Một biến thể xác định thú vị của Sắp xếp nhanh là tỷ lệ-mở rộng loại [39]. Một thuật toán phân loại cổ điển của một số di tích lịch sử là Shell loại [98, 163], một sự tổng quát của sắp xếp chèn, mà đạt hiệu quả bằng cách so sánh cũng nonadja- yếu tố phần trăm. Nó vẫn còn mở cho dù một số biến thể của Shellsort đạt được O (n log n) thời gian chạy trung bình [98, 120]. Có một số kỹ thuật thú vị để cải thiện bên ngoài Multiway hợp nhất- loại. Tuyết cày Heuristic [109, mục 5.4.1] hình chạy của dự kiến kích thước 2M sử dụng một bộ nhớ nhanh có kích thước M: Bất cứ khi nào một phần tử được lựa chọn từ các liên hàng đợi ưu tiên nal và ghi vào bộ đệm đầu ra và các yếu tố tiếp theo trong trong- đặt đệm có thể kéo dài thời gian hiện tại, chúng tôi thêm nó vào hàng đợi ưu tiên. Ngoài ra, việc sử dụng cây giải đấu thay vì hàng đợi ưu tiên chung dẫn đến một cải tiến hơn nữa hợp nhất Multiway [109]. song song có thể được sử dụng để cải thiện phân loại tập dữ liệu rất lớn, hoặc trong các hình thức của một uni-bộ vi xử lý sử dụng đĩa song song hoặc trong các hình thức của một bộ vi xử lý đa. Multiway mergesort và phân phối loại có thể được điều chỉnh để đĩa song song D của phân chia, tức là, bất kỳ khối D liên tiếp trong một hoạt động hoặc nhóm được phân bố đều trên các đĩa. Sử dụng ngẫu nhiên, ý tưởng này có thể được phát triển thành các thuật toán gần như tối ưu cũng chồng chéo I / O và tính toán [51]. Các thuật toán mẫu loại Phần 5.7 có thể được thích nghi với máy song song [25] và kết quả trong một bộ sắp xếp song song hiệu quả. Chúng ta đã thấy các thuật toán thời gian tuyến tính cho các đầu vào có cấu trúc cao. Một gen-khá mô hình tổng quát, mà n log n thấp hơn ràng buộc không nắm giữ, là mô hình từ. Trong mô hình này, các phím là các số nguyên đó phù hợp với một tế bào bộ nhớ duy nhất, nói 32 hoặc 64 bit phím, và các hoạt động tiêu chuẩn chữ (Bitwise-và, trên bit hoặc, bổ sung, ...) có sẵn trong thời gian liên tục. Trong mô hình này, phân loại có thể xác định trong √ thời gian O (n log log n) [9]. Với ngẫu nhiên thậm chí O n log log n có thể [196]. flash loại [141] là một thuật toán phân phối dựa trên hoạt động gần như tại chỗ. Tập thể dục 107 (Unix kiểm tra chính tả). Giả sử bạn có một từ điển bao gồm một trình tự sắp xếp các từ viết đúng chính tả. Để kiểm tra một văn bản, chuyển đổi nó thành một chuỗi các từ ngữ, sắp xếp nó, quét văn bản và từ điển cùng một lúc, và đầu ra từ trong văn bản mà không xuất hiện trong từ điển. Thực hiện kiểm tra chính tả này sử dụng unix công cụ trong một số ít các dòng mã. Bạn có thể làm điều đó trong một dòng?















































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: