Tại sao tôi có thể nhìn vào biểu đồ và ngay lập tức tìm điểm gần nhất đến điểm khác, nhưng tôi phải mất thời gian O (n) thông qua lập trình?


122

Hãy để tôi làm rõ:

Đưa ra một biểu đồ phân tán một số điểm n đã cho, nếu tôi muốn tìm điểm gần nhất với bất kỳ điểm nào trong cốt truyện, tôi có thể bỏ qua hầu hết các điểm trong biểu đồ, thu hẹp lựa chọn của tôi xuống một số điểm nhỏ, không đổi gần đó .

Tuy nhiên, trong lập trình, với một tập hợp các điểm n, để tìm điểm gần nhất với bất kỳ điểm nào, nó yêu cầu kiểm tra mọi điểm khác, đó là thời gian .O(n)

Tôi đoán rằng hình ảnh trực quan của đồ thị có thể tương đương với một số cấu trúc dữ liệu mà tôi không có khả năng hiểu được; bởi vì với lập trình, bằng cách chuyển đổi các điểm thành một phương thức có cấu trúc hơn như một góc phần tư, người ta có thể tìm thấy các điểm gần nhất với điểm trong trong thời gian hoặc bị đạn thời gian.n k log ( n ) O ( log n )knklog(n)O(logn)

Nhưng vẫn chưa có thuật toán đạn dược biết (mà tôi có thể tìm thấy) để tìm điểm sau khi tái cấu trúc dữ liệu.O(1)

Vậy tại sao điều này dường như là có thể với kiểm tra trực quan?


36
Bạn nhận thức được tất cả các điểm đã và đại khái là chúng ở đâu; "trình điều khiển phần mềm" cho đôi mắt của bạn đã thực hiện công việc khó khăn cho bạn trong việc diễn giải hình ảnh. Tương tự như vậy, bạn đang xem công việc này là "miễn phí" trong khi thực tế thì không. Nếu bạn đã có cấu trúc dữ liệu chia nhỏ các vị trí điểm thành một loại biểu diễn octotree nào đó, bạn có thể làm tốt hơn nhiều so với O (n). Rất nhiều quá trình tiền xử lý xảy ra trong phần tiềm thức của bạn trước khi thông tin thậm chí đến phần ý thức; không bao giờ quên rằng trong các loại tương tự.
Richard Tingle

20
Tôi nghĩ rằng ít nhất một trong những giả định của bạn không nói chung. giả sử tất cả các điểm được sắp xếp trên một vòng tròn có nhiễu loạn 'nhỏ' và thêm 1 điểm P là tâm của vòng tròn. Nếu bạn muốn tìm điểm gần nhất với P, bạn không thể bỏ qua bất kỳ điểm nào khác trong biểu đồ.
sụp đổ

4
Bởi vì bộ não của chúng ta thực sự tuyệt vời! Nghe có vẻ như một câu trả lời rẻ tiền nhưng đó là sự thật. Chúng tôi thực sự không biết nhiều về cách xử lý hình ảnh (rõ ràng là song song) của chúng tôi hoạt động.
Carl Witthoft

7
Về cơ bản, bộ não của bạn sử dụng phân vùng không gian mà bạn không nhận ra. Thực tế là điều này xuất hiện rất nhanh không có nghĩa là đó là một thời gian không đổi - bạn đang làm việc với một số độ phân giải hữu hạn và phần mềm xử lý hình ảnh của bạn được thiết kế cho điều đó (và thậm chí có thể xử lý tất cả những điều đó). Thực tế là bạn đang sử dụng một trăm triệu CPU nhỏ để thực hiện quá trình tiền xử lý sẽ không đưa bạn vào - nó chỉ thực hiện thao tác phức tạp trên nhiều bộ xử lý nhỏ. Và đừng quên những âm mưu để giấy 2D - rằng ngày của riêng mình được ít nhất . O ( n )O(1)O(n)
Luaan

9
Không chắc nó đã được đề cập chưa, nhưng bộ não con người hoạt động rất khác so với hệ thống máy tính loại SISD von Neumann. Đặc biệt có liên quan ở đây là, theo tôi hiểu, bộ não con người vốn đã song song và đặc biệt là khi xử lý các kích thích giác quan: bạn có thể nghe, nhìn và cảm nhận nhiều thứ cùng một lúc và dù sao (đại khái là vậy) của tất cả chúng cùng một lúc. Tôi đang tập trung viết bình luận nhưng nhìn thấy bàn làm việc của tôi, một lon soda, áo khoác của tôi treo trên cửa, cây bút trên bàn của tôi, v.v ... Bộ não của bạn có thể kiểm tra nhiều điểm cùng một lúc.
Patrick87

Câu trả lời:


115

Mô hình của bạn về những gì bạn làm về mặt tinh thần là không chính xác. Trong thực tế, bạn hoạt động theo hai bước:

  1. Loại bỏ tất cả các điểm quá xa, trong thời gian .O(1)
  2. Đo các điểm gần bằng nhau, trong thời gian .Θ ( m )mΘ(m)

Nếu bạn đã chơi các trò chơi như pétanque (bát) hoặc uốn tóc, thì điều này rất quen thuộc - bạn không cần kiểm tra các vật ở rất xa mục tiêu, nhưng bạn có thể cần phải đo các đối thủ gần nhất.

Để minh họa điểm này, chấm xanh nào gần với chấm đỏ nhất? (Chỉ bằng hơn 1 pixel, nhưng có một điểm gần nhất.) Để làm cho mọi thứ dễ dàng hơn, các chấm thậm chí còn được mã hóa màu theo khoảng cách.

một đám mây điểm

Bức ảnh này chứa điểm gần như trên một vòng tròn và tổng cộng có điểm xanh. Bước 1 cho phép bạn loại bỏ tất cả trừ khoảng điểm, nhưng bước 2 yêu cầu kiểm tra từng điểm . Không có một tiên nghiệm ràng buộc cho .n 10 m m mm=10n10mmm

Quan sát vật lý cho phép bạn thu nhỏ kích thước bài toán từ toàn bộ điểm thành tập hợp ứng viên bị hạn chế là điểm. Bước này không phải là bước tính toán như thường được hiểu, bởi vì nó dựa trên một quá trình liên tục. Các quá trình liên tục không phải chịu các trực giác thông thường về độ phức tạp tính toán và đặc biệt là phân tích tiệm cận.mnm

Bây giờ, bạn có thể hỏi, tại sao một quá trình liên tục không thể giải quyết hoàn toàn vấn đề? Làm thế nào để đến những điểm này , tại sao chúng ta không thể tinh chỉnh quá trình để có được ?m = 1mm=1

Câu trả lời là tôi đã gian lận một chút: Tôi đã trình bày một tập hợp các điểm được tạo ra bao gồm các điểm gần như gần nhất và các điểm hơn nữa. Nói chung, việc xác định điểm nào nằm trong một ranh giới chính xác đòi hỏi phải có một quan sát chính xác phải được thực hiện từng điểm một. Một quá trình loại bỏ thô cho phép bạn loại trừ nhiều ứng cử viên không rõ ràng, nhưng chỉ quyết định những ứng cử viên còn lại đòi hỏi phải liệt kê chúng.n - mmnm

Bạn có thể mô hình hóa hệ thống này trong một thế giới tính toán rời rạc. Giả sử rằng các điểm được biểu diễn trong cấu trúc dữ liệu sắp xếp chúng vào các ô trên lưới, tức là điểm được lưu trữ trong danh sách cho ô . Nếu bạn đang tìm kiếm các điểm gần nhất và ô chứa điểm này chứa nhiều nhất một điểm khác, thì việc kiểm tra ô chứa và 8 ô lân cận là đủ. Tổng số điểm trong 9 ô này là . Mô hình này tôn trọng một số tính chất chính của mô hình con người:( x , y ) ( x 0 , y 0 ) m(x,y)(x,y)(x0,y0)m

  • m có khả năng không bị ràng buộc - một trường hợp xấu hơn suy biến, ví dụ như các điểm nằm gần như trên một vòng tròn là luôn luôn có thể.
  • Hiệu quả thực tế phụ thuộc vào việc chọn thang đo phù hợp với dữ liệu (ví dụ: bạn sẽ không tiết kiệm được gì nếu các chấm của bạn nằm trên một tờ giấy và các ô của bạn rộng 1 km).

9
Hơn nữa, không phải tất cả các biểu đồ có thể được chiếu vào đồng bằng sao cho khoảng cách Euklidian khớp với khoảng cách trong biểu đồ (ví dụ: nếu các trọng số cạnh không tạo thành một số liệu).
Raphael

5
@Raphael Tôi hiểu câu hỏi là về hình học tính toán hơn là lý thuyết đồ thị, nhưng thực sự đây là một biến chứng bổ sung.
Gilles

2
@Gilles Xong . Tôi chỉ học thuật ngữ hình học tính toán .
Gerrit

2
Đây có thể là một lựa chọn nit, tôi có thể hiểu những gì bạn đang cố gắng thể hiện, nhưng khi một người mù màu "chọn màu xanh lá cây gần nhất với màu đỏ" dẫn đến rất nhiều vấn đề khó hiểu. Chỉ cần một cái gì đó để suy nghĩ trong tương lai - chọn bất kỳ kết hợp màu nào khác ngoài màu đỏ / xanh lá cây!
tpg2114

3
@ tpg2114 Đừng quên màu đỏ / xanh lá cây không phải là loại mù màu duy nhất. Hiển thị nó với hình dạng (hoặc bất kỳ thuộc tính nào khác ngoài màu sắc) sẽ bao gồm nhiều hơn so với "bất kỳ kết hợp màu nào khác ngoài màu đỏ / xanh lá cây".
Jonathan Van Matre

42

Lý do là dữ liệu đã được đặt trong "cấu trúc dữ liệu" được tối ưu hóa cho truy vấn này và thời gian tiền xử lý trong việc chuẩn bị biểu đồ nên được đưa vào thời gian đo của bạn tỷ lệ thuận với số lượng chấm, cho O (n) phức tạp ngay đó.

Nếu bạn đặt tọa độ trong bảng liệt kê tọa độ X và Y của từng điểm, bạn sẽ cần nỗ lực tinh thần lớn hơn nhiều để tính khoảng cách giữa các điểm, sắp xếp danh sách khoảng cách và chọn nhỏ nhất.

Ví dụ về một truy vấn không hoạt động tốt về mặt trực quan, sẽ là nhìn vào bầu trời đêm và - chỉ dựa trên chế độ xem của bạn và bảng tọa độ của mỗi ngôi sao - xác định vị trí ngôi sao gần nhất với Trái đất hoặc dấu hiệu chiêm tinh có khoảng cách nhỏ nhất giữa các ngôi sao nó bao gồm. Ở đây bạn sẽ cần một mô hình 3D có thể phóng to và có thể xoay để xác định điều này một cách trực quan, trong đó một máy tính sẽ coi đây là vấn đề cơ bản giống như bản gốc của bạn.


2
+1 - Tôi đã cuộn xuống tìm kiếm ai đó thực hiện chính xác điểm này. Việc biểu diễn dữ liệu đến rất quan trọng - chỉ cần thử tìm trung bình của danh sách được sắp xếp so với danh sách chưa được sắp xếp!
đám mây

21

O(1)O(1)


8
Hãy tưởng tượng việc đặt một tỷ điểm dọc theo một vòng tròn, nhưng tất cả hơi nhiễu một chút, vì vậy các điểm của bạn tạo thành một vòng trông mờ. Để tìm điểm gần trung tâm nhất bằng mắt, tôi không thấy cách bạn có thể làm tốt hơn nhiều so với việc kiểm tra từng điểm một.
Nick Alger

4
@NickAlger Vì vậy, nó giống như O(numberOfPointsAboutTheSameDistanceFromTheTargetPointAsTheClosestPoint), không nhất thiết phải liên quan đến n. Dù bằng cách nào, tôi nghĩ rằng một câu trả lời cho điều này sẽ trình bày các cấu trúc dữ liệu có thể theo cách mà tâm trí con người nhận thức và truy vấn nó. Nói đơn giản là không phải O (1) cảm thấy ... lười biếng? không thỏa đáng?
Công tước

5
@Dukeling O (một cái gì đó) đề cập đến trường hợp xấu nhất. Nếu có bất kỳ bố cục nào mà não người không thể làm điều đó trong thời gian liên tục, thì đó chắc chắn không phải là O (1). Nếu có một số giới hạn X trong đó bộ não con người có thể xử lý các điểm X trong thời gian không đổi, nhưng hoàn toàn không thể xử lý các điểm X * 2 - thì đó không phải là O (1).
Peteris

3
@Dukeling Nó phụ thuộc hoàn toàn vào n, vì trong trường hợp xấu nhất, nó bằng n và nếu bạn đã cho n điểm tùy ý, bạn phải hy vọng rằng có thể không thể thực hiện nhanh hơn hoạt động của C * n.
Peteris 17/03/2016

2
@Peteris Tôi đoán chúng tôi không đồng ý về ý nghĩa của việc "nhất thiết phải phụ thuộc vào n" và cách xác định giới hạn trên gần nhất.
Công tước

15

Tính ưu việt của bản lề kiểm tra trực quan trên các cơ sở quan trọng không thể được đảm bảo nói chung:

  • O(n)

  • đếm : (xem nhận xét của Nick Alger về câu trả lời do DW đưa ra) giả sử số điểm vượt quá số lượng tế bào võng mạc của bạn - bạn thậm chí sẽ không xác định được tất cả các điểm liên quan.

  • phương sai : (xem nhận xét của Nick Alger về câu trả lời do DW đưa ra) giả sử một tập hợp các điểm trên lưới thông thường (ví dụ như hình lục giác) bị nhiễu loạn ngẫu nhiên nhỏ. nếu các nhiễu loạn này trở nên nhỏ hơn độ phân giải của võng mạc của bạn (hoặc bất kỳ lưới phủ nào khác), bạn sẽ không chỉ khó phát hiện khoảng cách tối thiểu thực tế mà chọn các cặp điểm sai với xác suất cao.

O(n)O(1)


1
O(n)O(log(n))

O(n)nO(nlogn)n

15
  1. Máy tính đang giải quyết một vấn đề khác. Nó có một danh sách các điểm, không phải là một hình ảnh rasterized của các điểm. Việc chuyển đổi từ danh sách thành hình ảnh, tức là "vẽ" các điểm, cần có O(n)thời gian.

    Nhanh chóng! Cái nào gần nhất với (1,2):

    • (9, 9)
    • (5, 2)
    • (3, -2)
    • (4, 3)
    • (0, 4)
    • (1, 9)

    Khó hơn rất nhiều, phải không? Tôi cá là nếu tôi lập danh sách gấp đôi thì bạn sẽ phải làm gấp đôi công việc.

  2. Bạn không nhận thức được bộ não của bạn đang làm việc bao nhiêu. Bạn không "chỉ biết" điểm nào gần hơn. Bộ não của bạn đang làm công việc tính toán để tìm ra câu trả lời đó và làm cho nó có sẵn. Bộ não hoạt động song song trên từng điểm, vì vậy thời gian hoàn thành vẫn giữ nguyên, nhưng số lượng công việc cần thiết vẫn tăng theo số điểm.


13

Vì lý do tương tự khi bạn nhìn vào một hình tam giác và biết đó là một hình tam giác, bạn đang quên đi hàng triệu phép tính bạn làm mà không nhận thấy nó.

Mạng lưới thần kinh

Trong thực tế, bạn là một mạng lưới thần kinh đã được đào tạo và tải với số lượng lớn trên khối lượng dữ liệu.

Lấy trò chơi sắp xếp hình dạng trẻ sơ sinh làm ví dụ:

nhập mô tả hình ảnh ở đây

Khi một đứa trẻ lần đầu tương tác với điều này, có khả năng chúng sẽ cố gắng chèn hình dạng vào các lỗ sai, điều này là do chúng chưa được đào tạo não hoặc gặp đủ dữ liệu để xây dựng mạng. Họ không thể đưa ra các giả định về các cạnh, kích thước, .etc để xác định hình dạng nào phù hợp với lỗ.

Điều này có vẻ hiển nhiên đối với bạn (tôi hy vọng) bởi vì bạn đã xây dựng các kết nối này, thậm chí bạn có thể nghĩ rằng nó là trực quan và không phải phá vỡ nó, ví dụ bạn chỉ biết tam giác vừa với tam giác và không cần phải xấp xỉ kích thước , đếm các cạnh, .etc. Điều này không đúng, bạn đã làm tất cả những gì trong tiềm thức của bạn, ý nghĩ duy nhất mà bạn có là nó là một hình tam giác. Nhiều triệu tính toán đã xảy ra từ việc lấy một biểu diễn trực quan, hiểu nó đại diện cho cái gì, hiểu các yếu tố riêng lẻ và sau đó ước tính khoảng cách của chúng, thực tế là bạn có một cơ sở dữ liệu thông tin lớn để thăm dò đơn giản hơn.

Bộ não của bạn không phải là nhị phân

Dữ liệu mà bộ não của bạn hoạt động không phải là nhị phân (theo như chúng tôi biết), không đúng hoặc sai, nó chứa nhiều trạng thái mà chúng tôi sử dụng để giải thích dữ liệu, chúng tôi cũng thường xuyên gặp sự cố, ngay cả khi chúng tôi làm theo đúng Quá trình này là do dữ liệu thay đổi thường xuyên. Tôi sẽ mạo hiểm đoán rằng bộ não của chúng ta hoạt động giống như một máy tính lượng tử trong đó các bit ở trạng thái gần đúng cho đến khi đọc. Đó là, nếu bộ não của chúng ta hoạt động giống như một máy tính, nó thực sự không được biết đến.

Do đó, một thuật toán để làm việc với dữ liệu nhị phân sẽ không hoạt động giống nhau. Bạn không thể so sánh hai. Trong đầu bạn đang sử dụng các khái niệm để thực hiện, các loại dữ liệu phong phú chứa nhiều thông tin hơn, bạn có khả năng tạo các liên kết nơi chúng không được xác định rõ ràng; Khi nhìn thấy một hình tam giác, bạn có thể nghĩ về mặt tối của Pink Floyd trên mặt trăng.

nhập mô tả hình ảnh ở đây

Quay lại biểu đồ phân tán, không có lý do gì bạn không thể làm điều này trên máy tính bằng cách sử dụng bitmap và đo khoảng cách từ một điểm trong việc tăng bán kính cho đến khi bạn gặp phải một điểm khác. Nó có thể là gần nhất mà bạn có thể đạt được gần đúng của một con người. Nó có thể chậm hơn nhiều do giới hạn dữ liệu và vì bộ não của chúng ta không nhất thiết phải quan tâm đến sự phức tạp tính toán và thực hiện một lộ trình phức tạp để làm mọi việc.

Sẽ không phải là O (1) hay thậm chí là O (n) nếu n là số điểm, thay vào đó độ phức tạp của nó bây giờ phụ thuộc vào khoảng cách tuyến tính tối đa từ điểm được chọn đến giới hạn của hình ảnh.

tl; dr

Bộ não của bạn không phải là một máy tính nhị phân.



8

bạn đang quên một bước quan trọng: vẽ tất cả những điểm đó trên biểu đồ bạn đang xem.

điều này là do sự cần thiết của một hoạt động O (n).

sau đó, một máy tính có thể sử dụng phần mềm nhận dạng hình ảnh để tìm các điểm gần đúng nhất với trung tâm giống như cách mà mắt người có thể. Đây là trường hợp xấu nhất của hoạt động O (sizeOfImage).

để con người thực hiện giống như máy tính hãy nhớ rằng máy tính có được danh sách tọa độ và chỉ có thể nhìn vào một tọa độ tại thời điểm đó.


1
Nếu chọn một "độ phân giải" không đổi, người ta có thể sử dụng thuật toán là thời gian O (log (độ phân giải)) cho mỗi điểm để vẽ chúng và xác định tất cả các điểm "gần" với điểm quan tâm. Chữ O (log (độ phân giải)) tương tự mơ hồ với thực tế là mất nhiều thời gian hơn để vẽ các điểm chính xác trên giấy hơn là làm như vậy ít chính xác hơn. Cũng lưu ý rằng việc tăng độ phân giải sẽ làm tăng chi phí cho tất cả các điểm của thuật toán để loại bỏ các điểm không có ứng cử viên, nhưng giảm số điểm không gần nhất tồn tại trong việc loại bỏ.
supercat

7

Giải thích của tôi về câu hỏi:

Tôi không tin rằng câu hỏi này được coi đơn giản là một vấn đề phức tạp hình học tính toán. Nên hiểu rõ hơn khi nói: chúng ta nhận thấy một khả năng tìm thấy câu trả lời trong thời gian liên tục, khi chúng ta có thể. Điều gì giải thích cho nhận thức này, và cho đến lời giải thích này và những hạn chế của con người, một máy tính có thể làm tốt như vậy.

O(1)O(log(n))

Điều này có thể được củng cố bởi luật Weber-Fechner , nói rằng nhận thức của chúng ta sẽ được đo lường trên thang đo logarit của thước đo vật lý thực tế. Nói cách khác, chúng tôi nhận thức các biến thể tương đối chứ không phải là các biến thể tuyệt đối. Đây là ví dụ tại sao cường độ âm thanh được đo bằng decibel.

O(log(n))Oψ(log(log(n)))Oψ

Oψ(log(log(n))) mà cho tất cả các mục đích thực tế có lẽ không thể phân biệt được từ một hằng số, và nhất thiết phải có một thời gian liên tục được thêm vào nó để bắt đầu quá trình nhận dạng và thừa nhận kết quả.

Có tính đến những hạn chế về sinh lý

Kết luận trên được duy trì lâu hơn khi xem xét các bước thu nhận hình ảnh.

OP đã cẩn thận tách rời việc xây dựng một cấu trúc dữ liệu phù hợp, "chẳng hạn như một phần tư", được khấu hao trên một số truy vấn.

Điều này không hoạt động đối với hầu hết những người không ghi nhớ hình ảnh. Tôi nghĩ rằng hình ảnh được quét cho mỗi truy vấn, nhưng điều đó không ngụ ý quét tất cả các điểm: không phải lần đầu tiên và không cho các truy vấn sau này.

TscanTscan

mOψ(log(log(m)))

227log2(27)

Không biết các đơn vị thực tế sẽ được sử dụng, điều này chỉ đơn giản cho thấy rằng biến thể để xử lý là tồi tệ nhất theo cùng thứ tự với các hoạt động thời gian không đổi khác. Do đó, điều khá tự nhiên là thời gian cảm nhận để tìm điểm gần nhất cảm thấy không đổi. . . cho dù chúng tôi xác định điểm gần nhất hoặc chỉ một tập hợp các điểm gần hơn.

Về các ví dụ phản biện và một giải pháp khả thi

Tất nhiên là dễ dàng để xây dựng các ví dụ phản biện khiến cho việc xác định điểm gần nhất trở nên rất khó khăn trong một bộ sưu tập nhỏ các điểm gần hơn. Đây là lý do tại sao OP thực sự yêu cầu một thuật toán loại bỏ nhanh chóng hầu hết các điểm, ngoại trừ những điểm gần nhất. Vấn đề về sự khó khăn có thể có trong việc lựa chọn giữa một số điểm gần được đưa ra trong nhiều câu trả lời, với ví dụ mô tả về các điểm gần nhất nằm gần một vòng tròn quanh điểm tham chiếu. Thông thường, luật Weber-Fechner không cho phép phân biệt các biến thể khoảng cách nhỏ trên khoảng cách đủ dài. Hiệu ứng này thực sự có thể được tăng lên bởi sự hiện diện của các điểm khác, mặc dù bị loại bỏ, có thể làm sai lệch nhận thức về khoảng cách. Vì vậy, cố gắng xác định điểm gần nhất sẽ là một nhiệm vụ khó khăn hơn, và cũng có thể yêu cầu các bước kiểm tra cụ thể, chẳng hạn như sử dụng các công cụ, sẽ phá hủy hoàn toàn cảm giác về thời gian không đổi. Nhưng có vẻ như rõ ràng nằm ngoài phạm vi thử nghiệm được OP xem xét, do đó không liên quan lắm.

Câu hỏi cần trả lời , đó là câu hỏi mà OP thực sự đặt ra, là liệu có cách nào để loại bỏ hầu hết các điểm hay không, ngoại trừ một số điểm còn lại dường như có khoảng cách rất giống với điểm tham chiếu.

O(log(n))

Từ chối chi phí khấu hao không cho phép giải pháp máy tính, vì tất cả các điểm phải được xem xét. Điều này nhấn mạnh một sự khác biệt lớn trong khả năng tính toán của não bộ và nhận thức của con người: nó có thể sử dụng tính toán tương tự với các tính chất khá khác biệt với tính toán kỹ thuật số . Đây thường là trường hợp khi hàng tỷ điểm không thể phân biệt bằng mắt, không có độ phân giải để nhìn thấy bất cứ thứ gì ngoài một đám mây lớn với nhiều bóng tối khác nhau. Nhưng mắt sau đó có thể tập trung vào phần nhỏ hơn có liên quan và nhìn thấy một số điểm giới hạn, chứa những điểm có liên quan. Nó không phải biết tất cả các điểm riêng lẻ. Để một máy tính làm điều tương tự, bạn sẽ phải cung cấp cho nó một cảm biến tương tự, thay vì tọa độ số chính xác của từng điểm. Đó là một vấn đề rất khác nhau.

"Kiểm tra trực quan đơn thuần" ở một số khía cạnh mạnh hơn rất nhiều so với tính toán kỹ thuật số. Và đó cũng là do vật lý của các cảm biến, không chỉ nhờ vào khả năng tính toán có thể lớn hơn của bộ não.


O(1)O(logn) O(1)O(1)O(logn)khi bạn giải quyết một nhiệm vụ ngoài sự công nhận nhận thức tuyệt đối, ví dụ: định vị một số đã cho trong biểu diễn đồ họa của một đống nhị phân cân bằng với các nút được gắn nhãn. lưu ý rằng các hạn chế về nhận thức không quan trọng vì bạn chỉ kiểm tra đồ họa cục bộ.
sụp đổ

n

Oψ(log(log(n)))

4

Chúng tôi đã có các sinh viên trong các kỳ thi, khi được hỏi bạn có thể sắp xếp một mảng nhanh như thế nào, sẽ cho rằng máy tính là ngu ngốc và cần n * log (n) (hoặc tệ hơn), trong khi con người có thể làm điều đó nhanh hơn.

Câu trả lời của giáo sư của tôi luôn là: Tôi sẽ đưa ra một danh sách 10.000 mục. Hãy xem liệu bạn có thể đưa ra một phương pháp nhanh hơn những gì máy tính sẽ làm không.

Và sau đó: có bao nhiêu lõi xử lý có liên quan khi bạn cố gắng tìm điểm gần nhất? Bạn không phải là một bộ xử lý đơn, bạn có một mạng lưới thần kinh, có một số tính linh hoạt khi thực hiện các tác vụ như thế này.


1
Cộng với các khía cạnh khác nhau của những gì bạn biết về dữ liệu và những tài nguyên bạn có sẵn khi bạn cần sắp xếp. Ví dụ, nếu các sinh viên của bạn cần sắp xếp một cái gì đó không thể phù hợp hoàn toàn trong phòng họ đang có.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen: đây là một điều tuyệt vời để hiểu mức độ phức tạp không gian quan trọng là "thứ gì đó không thể phù hợp hoàn toàn trong phòng" 8 ^)
Zane

3

Tôi tin rằng @ Patrick87 đã cho bạn manh mối: mắt và não của bạn là một cỗ máy tính toán song song. Một số người lập luận rằng điều này không giải thích được vấn đề, bởi vì đối với các vấn đề lớn tùy ý, số lượng bộ xử lý song song hữu hạn không có sự khác biệt.

Nhưng nó làm ở đây: như nhiều người gợi ý, mắt (và não) của bạn có khả năng hạn chế để giải quyết vấn đề này; và điều này là do người ta không thể phù hợp với bất kỳ số điểm nào trong phạm vi của một cái nhìn bình thường của con người. Mắt của bạn cần có khả năng phân biệt chúng để bắt đầu, và nếu có quá nhiều, thì chúng sẽ ở rất gần so với mắt bạn sẽ không nhận thấy sự khác biệt. Điểm mấu chốt: nó nhanh cho các điểm đủ phù hợp với tầm nhìn bình thường của bạn, tức là rất ít. Trong các trường hợp khác, nó sẽ thất bại.

Vì vậy, bạn có thể giải quyết vấn đề này trong O (1) cho các trường hợp nhỏ và đơn giản mà não bạn có thể xử lý một cách dễ dàng. Ngoài ra, nó không thể và do đó, nó thậm chí không phải là O ( bất cứ điều gì ) bởi vì rất có thể nó thất bại.


1

Không ai đề cập rằng vấn đề này có thể được giải quyết rất nhanh trên máy tính có chỉ số không gian. Điều này tương đương với việc vẽ ra các điểm trong ảnh để mắt bạn quét nhanh và loại bỏ hầu hết các điểm.

Có một thuật toán lập chỉ mục rất tốt được Google và những người khác sử dụng để tìm (các) điểm gần nhất được gọi là Geohash. http://en.wikipedia.org/wiki/Geohash .

Tôi nghĩ rằng điều này thậm chí sẽ tăng cuộc thi có lợi cho máy tính. Tôi không ấn tượng với một số câu trả lời sử dụng tư duy tuyến tính.


Θ(n) Θ(lgn)

Vấn đề là một chỉ số không gian làm cho nó dễ dàng như đối với một người nhìn vào màn hình rải rác với các chấm.
Revierpost

1

Nếu chúng ta xem xét trường hợp tìm một hàng xóm gần nhất trong một tập hợp các chiều n trong không gian Euclide, thì độ phức tạp thường bị giới hạn bởi số lượng kích thước khi nó phát triển lớn (tức là lớn hơn kích thước của tập dữ liệu).

O(logd2n)

Vấn đề tìm điểm gần nhất với một nút trong biểu đồ có biểu thức Euclide bất cứ khi nào đồ thị có thể được nhúng vào không gian Euclide với độ méo đủ nhỏ. Và sử dụng danh sách kề với trọng số, chúng ta vẫn cần xây dựng danh sách kề.

O(1)


-1

các câu trả lời khác là tốt nhưng làm thế nào về một câu hỏi truy cập zen kéo dài lý do / tiền đề cơ bản của câu hỏi ban đầu đến mức cực đoan để chỉ ra một số lỗi [nhưng cũng là nghịch lý cốt lõi của nghiên cứu AI ]:

Nếu tôi có thể suy nghĩ với trí thông minh của con người, tại sao tôi không thể tạo ra một máy tính có suy nghĩ tốt như con người?

Có nhiều cách để trả lời câu hỏi của bạn, nhưng về cơ bản, các quá trình suy nghĩ và khả năng nhận thức của não bộ của chúng ta không nhất thiết có thể truy cập được và nội tâm chúng ta áp dụng cho chúng có thể gây hiểu lầm. ví dụ chúng ta có thể nhận ra các đối tượng nhưng chúng ta không có cách nào để nhận thức / giải thích quy trình bán thuật toán tiếp tục cho phép điều này. cũng có nhiều thí nghiệm tâm lý học cho thấy có những biến dạng tinh tế trong nhận thức của chúng ta về thực tế và đặc biệt là nhận thức về thời gian, xem ví dụ nhận thức về thời gian .

Các nhà khoa học thường nghĩ / phỏng đoán rằng bộ não con người thực tế sử dụng thuật toán nhưng chúng hoạt động khác với máy tính và cũng có một lượng rất lớn xử lý song song diễn ra trong não thông qua mạng lưới thần kinh không thể so sánh được với thuật toán máy tính tuần tự . ở động vật có vú, một tỷ lệ đáng kể của toàn bộ thể tích não được dành riêng cho xử lý thị giác.

nói cách khác, bộ não của con người theo nhiều cách là máy tính trực quan được tối ưu hóa cao và thực tế chúng có nhiều khả năng vượt quá các siêu máy tính lớn nhất thế giới hiện nay, như trong nhận dạng đối tượng, v.v., đó là do thiếu sót (so sánh) trong phần mềm / phần cứng do con người tạo ra so với sinh học đã được điều chỉnh / phát triển / tối ưu hóa cao trong hàng triệu năm.


O(f(n))

-2

Nói chung, bạn đang giải quyết hai vấn đề khác nhau và nếu bạn cạnh tranh trong cùng một cuộc thi, độ phức tạp sẽ là O (1) cho cả hai bạn. Tại sao? Hãy làm cho tình huống đơn giản hơn một chút - giả sử rằng bạn có một đường thẳng với một điểm đỏ và n điểm xanh lục. Nhiệm vụ của bạn là tìm điểm xanh gần điểm đỏ nhất. Tất cả mọi thứ là trên biểu đồ. Bây giờ những gì bạn làm và những gì bạn lập trình về cơ bản là giống nhau - chỉ cần "bỏ đi" (theo cả hai hướng) từ điểm đỏ và kiểm tra xem pixel bạn đang nhìn có màu trắng / đen (nền) hay xanh lục. Bây giờ độ phức tạp là O (1).

Điều thú vị là một số phương pháp trình bày dữ liệu đưa ra câu trả lời cho một số câu hỏi ngay lập tức (O (1)). Ví dụ cơ bản cực kỳ đơn giản - chỉ cần đếm pixel trắng trên ảnh đen (mỗi giá trị pixel là 0 = đen hoặc 1 = trắng). Những gì bạn cần làm chỉ là thêm tất cả các giá trị pixel - độ phức tạp là như nhau cho 1 pixel trắng và 1000, nhưng nó phụ thuộc vào kích thước hình ảnh - O (m), m = image. Thong * image.height. Có thể làm điều đó nhanh hơn? Tất nhiên, tất cả những gì chúng ta cần làm là sử dụng phương pháp lưu trữ hình ảnh khác nhau là hình ảnh tích hợp : nhập mô tả hình ảnh ở đây Bây giờ tính kết quả là O (1) (nếu bạn đã tính hình ảnh tích phân). Một cách khác là chỉ lưu trữ tất cả các pixel trắng trong mảng / vector / list / ... và chỉ cần đếm kích thước của nó - O (1).


O(1)O(1)

@FrankW - vậy sự phức tạp của "bỏ đi" là gì? Tôi không cố nói rằng bạn sai, tôi chỉ muốn biết. Đếm kích thước của mảng / vectơ / danh sách - nói chung kích thước mảng là không đổi nên không cần phải đếm nó, vectơ - tôi không chắc, tôi sẽ nói rằng nó phụ thuộc vào việc thực hiện (nhưng rất có thể trong hầu hết các triển khai, đó chỉ là lĩnh vực một đối tượng vì vậy không cần phải đếm nó), danh sách - bạn nói đúng, đó không phải là O (1) - lỗi của tôi.
cyriel

kkO(#pixels)
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.