Thuật toán song song để tìm thời gian tối đa trong sử dụng bộ xử lý


11

Chúng tôi đã trình bày trong lớp với một thuật toán để tìm tối đa trong một mảng song song với độ phức tạp thời gian với máy tính.O(1)n2

Thuật toán là:

Cho một mảng A có độ dài n:

  1. Tạo một mảng cờ B có độ dài n và khởi tạo nó bằng các số 0 với máy tính.n
  2. So sánh mỗi 2 phần tử và viết 1 trong B ở chỉ số tối thiểu với máy tính.n2
  3. tìm chỉ số có 0 trong A với máy tính.n

Giảng viên trêu chọc chúng tôi rằng nó có thể được thực hiện với các máy tính và với độ phức tạp thời gian .nlognlogn

Sau khi suy nghĩ rất nhiều, tôi không thể tìm ra cách để làm điều đó. Bất kỳ ý tưởng?

Câu trả lời:


9

Chia mảng ban đầu của bạn thành các khối có độ dài . Đặt từng bộ xử lý phụ trách từng khối và tìm tối đa bằng thuật toán thông thường trong thời gian . Bây giờ chúng ta cần tính toán tối đa của một mảng có độ dài . Ghép các phần tử và tính cực đại theo cặp để giảm kích thước của mảng xuống một nửa. Lặp lại nó lần để tìm mức tối đa của toàn bộ mảng.n/lognlognlognn/lognlogn

Ý tưởng tương tự cũng cho thấy rằng bạn có thể tính toán tối đa song song trong thời gian không đổi bằng cách sử dụng máy tính cho mọi . (Tập thể dục.)n1+ϵϵ>0


Mục tiêu là tìm tối đa trong thời gian , không phảiO(1)O(logn)
NightRa

Hãy tự mình chứng minh giới hạn dưới của cho số lượng máy tính nhân với độ phức tạp thời gian. Ω(n)
Yuval Filmus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.