Giảm độ phức tạp với song song


10

Có thể (dấu gạch chéo bạn có thể cung cấp một ví dụ) để giảm độ phức tạp tính toán của một vấn đề bằng cách sử dụng thuật toán song song không yêu cầu số lượng bộ xử lý so với kích thước đầu vào không?


Bạn có thể làm rõ câu hỏi của bạn một chút? Số lượng bộ xử lý không đổi -> tốt nhất bạn có thể cải thiện thời gian chạy bằng một yếu tố không đổi. Tôi đoán đây không phải là ý bạn?
Jukka Suomela

"Không liên quan đến kích thước đầu vào". Bạn có ý nghĩa chính xác bởi điều đó? O (1)?
Aryabhata

Ý tôi là bộ xử lý O (1). @Jukka: đó là ý tôi, có thể giảm độ phức tạp tính toán bằng cách thêm một số bộ xử lý so với kích thước đầu vào không?
Nick Larsen

Câu trả lời:


12

Nếu bạn có nghĩa là bộ xử lý O (1), thì không, độ phức tạp tính toán không thể giảm.

Đơn giản chỉ cần sắp xếp công việc được thực hiện bởi mỗi bộ xử lý và thực hiện nó trên một bộ duy nhất. Nếu bạn lo lắng về việc đồng bộ hóa, thì một bộ xử lý có thể dễ dàng mô phỏng điều đó.


Cảm ơn bạn đã trả lời nhanh chóng. Nếu không tạo ra một câu hỏi khác cho một cái gì đó liên quan chặt chẽ như vậy, liệu có thể giảm độ phức tạp tính toán bằng cách sử dụng một số bộ xử lý liên quan đến một cái gì đó không phải là kích thước đầu vào?
Nick Larsen

2
@Nick: Một cái gì đó ngoài kích thước đầu vào là O (1) :-)
Aryabhata

Cảm ơn, tôi đã gặp khó khăn khi nghĩ về bất cứ điều gì khác, nhưng tôi muốn chắc chắn.
Nick Larsen

WRT cho dù bạn có thể đạt được tốc độ tăng tốc với một số bộ xử lý phát triển với một số lượng khác với kích thước đầu vào, tôi không chắc chắn rằng câu trả lời là 'không'. Có những vấn đề mà độ phức tạp tăng lên với một số tham số khác nhau (mặc dù rõ ràng không độc lập với) kích thước đầu vào. Điều gì xảy ra nếu đối với một số vấn đề về biểu đồ, tôi đã cho phép bạn một số bộ xử lý liên quan đến chiều rộng cây của biểu đồ, chẳng hạn?
Aaron Roth

@Aaron: Nếu số lượng bộ xử lý được phép có liên quan đến đầu vào bằng cách nào đó, thì có, chúng tôi không thể nói "không" cho chắc chắn. Tất nhiên, trừ khi chúng tôi cụ thể, đó là một câu hỏi vô nghĩa.
Aryabhata

6

Có một lĩnh vực mới nổi của các thuật toán song song hạt thô, trong đó thời gian chạy (và mức tiêu thụ tài nguyên tính toán khác) được coi là một hàm của các tham số độc lập n (kích thước đầu vào) và p (số lượng bộ xử lý), thường theo giả định tự nhiên n >> p .

Một điểm khởi đầu tốt là google cho "song song hàng loạt".


Lớp phức tạp có thể thay đổi nếu bạn cho phép phần cứng mở rộng quy mô với dữ liệu đầu vào không? Tôi gặp rắc rối với google khi là giáo dân: /
Gerenuk


1

Nếu bạn phân phối tác vụ cho bộ xử lý (trong đó p là hằng số).pp

Ôi(f(n)/p)Ôi((1/p)f(n))Ôi(cf(n))Ôi(f(n))c= =1/p

TT/p+SomeMoreTTôime

Nhưng KHÔNG thay đổi phức tạp.


1

"bạn không thể tính toán nó với 1 bộ xử lý, nhưng có thể tính toán với 2."

Điều này là không thể, giả sử rằng cả hai bộ xử lý là TM hoặc một mô hình ít mạnh hơn. Từ wikipedia, cho máy nhiều băng:

Mô hình này bằng trực giác có vẻ mạnh hơn nhiều so với mô hình băng đơn, nhưng bất kỳ máy đa băng nào, dù k lớn đến đâu, đều có thể được mô phỏng bằng máy băng đơn chỉ sử dụng thời gian tính toán nhiều hơn theo phương pháp bậc hai (Papadimitriou 1994, Thrm 2.1)

Ngoài ra, đối với máy nhiều đầu, từ "Mô phỏng thời gian tuyến tính của máy turing đa đầu có đầu - Nhảy đầu" của Walter J. Savitch và Paul MB Vitányi:

Kết quả chính của bài báo này cho thấy, với một máy Turing có nhiều đầu đọc ghi trên mỗi băng và có thêm một thao tác dịch chuyển "chuyển một đầu nhất định sang vị trí của một số đầu khác", người ta có thể xây dựng một cách hiệu quả máy Turing đa nhiệm với một đầu đọc-ghi trên mỗi băng mô phỏng theo thời gian tuyến tính; tức là nếu máy ban đầu hoạt động theo thời gian T (n), thì máy mô phỏng sẽ hoạt động theo thời gian cT (n), đối với một số hằng số c.


Ở đây chúng tôi có một ví dụ tuyệt vời cho chi phí trừu tượng. Máy tính thực (như triển khai của RM) có thể được song song tốt hơn so với TM.
Raphael

RM là viết tắt của từ gì? Nếu đó là một loại sai và bạn có nghĩa là TM, tôi không đồng ý. Nhiều người chơi / nhiều TM không phải lo lắng về giao tiếp của bộ xử lý và luật của Amdahl. Hơn nữa, tôi không thấy làm thế nào một máy tính có thể hoạt động tốt hơn một TM truy cập ngẫu nhiên và ngược lại, tức là tôi tin rằng chúng tương đương nhau.
chazisop

0

Có lẽ "song song hoặc" (được đưa ra hai hàm trả về giá trị boolean, cho biết liệu một trong số chúng có trả về đúng không, cho rằng bất kỳ hàm nào trong số chúng, nhưng không phải cả hai, có thể không kết thúc) có thể là điều bạn đang nói đến: bạn không thể tính toán Nó với 1 bộ xử lý, nhưng có thể tính toán với 2.

Tuy nhiên, điều này phụ thuộc nhiều vào mô hình tính toán nào bạn sẽ sử dụng, cho dù bạn đưa ra các quy trình dưới dạng hộp đen hoặc như mô tả của chúng mà bạn có thể tự giải thích, v.v.


2
Điều này có vẻ sai, trừ khi bạn đang làm việc trong một số mô hình hạn chế nghiêm trọng. Một bộ xử lý duy nhất có thể xen kẽ các hướng dẫn sẽ chạy trên 2, gây ra chậm nhất là 2x + O (1). Tôi đoán bởi 'hộp đen' 'bạn có nghĩa là xen kẽ là không thể? Ngay cả khi đó, nếu bạn có thể chấm dứt các tính toán hộp đen mất quá nhiều thời gian, bạn vẫn có thể mô phỏng hai bộ xử lý bằng cách liên tục đoán và nhân đôi độ dài tính toán cần thiết cho mỗi quy trình.
Aaron Roth

Nhưng điều đó, đến lượt nó, đòi hỏi chúng ta phải có thể chấm dứt tính toán. Ý tôi là bạn không thể thực hiện song song hoặc trên 1 bộ xử lý trong một mô hình trong đó điều duy nhất bạn có thể làm là chạy một tính toán cho đến khi hoàn thành.
jkff

Bây giờ tôi hiểu ý của bạn, nhưng tôi tin rằng nó chưa hoàn thành. Bạn không thể tính nó với 2. Nếu một máy tiếp tục chạy và các câu trả lời khác CÓ, câu trả lời là CÓ. Nhưng nếu nó trả về KHÔNG thì sao? Bạn không thể trả lời theo kiểu xác định, bởi vì bạn không biết liệu máy vẫn đang chạy hay bị kẹt (tức là vấn đề HALTING).
chazisop
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.