Tại sao dữ liệu trong khoa học máy tính được coi là rời rạc?


35

Tôi hiểu rằng "cấu trúc" dữ liệu hoàn toàn phụ thuộc vào Đại số Boolean, nhưng:

Tại sao dữ liệu được coi là một thực thể toán học rời rạc chứ không phải là một thực thể liên tục?

Liên quan đến điều này:

Những hạn chế hoặc bất biến, bị vi phạm trong cấu trúc dữ liệu như một thực thể liên tục trong các kích thước gì?r

Tôi không phải là một chuyên gia trong lĩnh vực này vì tôi là một sinh viên toán chưa tốt nghiệp, vì vậy tôi thực sự đánh giá cao nếu ai đó giải thích điều này cho tôi như tôi năm tuổi.


12
Tính toán thực sự sẽ có sức mạnh vô lý
quấy rối

1
Đi qua chương này nếu thời gian cho phép. Tác giả giải thích rất dễ dàng để tìm hiểu từ các tín hiệu Analog vs Binary
Muhammad Sayef 18/03/2017

Câu trả lời:


44

Câu trả lời

tại sao dữ liệu được coi là một thực thể toán học rời rạc chứ không phải là một thực thể liên tục

Đây không phải là một lựa chọn; về mặt lý thuyết và thực tế không thể biểu diễn các giá trị cụ thể, liên tục trong một máy tính kỹ thuật số hoặc thực sự trong bất kỳ loại tính toán nào.

Lưu ý rằng "rời rạc" không có nghĩa là "số nguyên" hoặc đại loại như thế. "rời rạc" là trái ngược với "liên tục". Điều này có nghĩa là, để có một máy tính thực sự có khả năng lưu trữ những thứ không rời rạc, bạn sẽ cần có khả năng lưu trữ hai số abnơi abs(a-b) < εcó giá trị nhỏ tùy ý ε. Chắc chắn, bạn có thể đi sâu như bạn muốn (bằng cách sử dụng ngày càng nhiều dung lượng lưu trữ), nhưng mọi máy tính (vật lý) luôn có giới hạn trên. Bất kể bạn làm gì, bạn không bao giờ có thể tạo ra một máy tính (vật lý) lưu trữ các số được giải quyết một cách tùy tiện.

Ngay cả khi bạn có thể biểu diễn các số bằng các cấu trúc toán học (ví dụ π), điều này không thay đổi bất cứ điều gì. Nếu bạn lưu trữ một biểu đồ hoặc bất cứ điều gì đại diện cho một công thức toán học, thì điều này cũng rời rạc như mọi thứ khác.

Phụ lục

Phần còn lại chỉ là một viễn cảnh nhỏ ngoài lĩnh vực khoa học máy tính. Như các ý kiến ​​đã chỉ ra, chủ đề vật lý không phải bàn cãi, và như bạn có thể thấy tôi đã xây dựng đoạn tiếp theo của mình theo cách khá không liên quan đến việc nó có đúng hay không. Hãy coi nó như một động lực mà khái niệm "liên tục" không phải là một điều tầm thường. Câu trả lời được đưa ra ở trên không phụ thuộc vào việc không gian có rời rạc hay không.

Lưu ý rằng tất cả những điều này không phải là vấn đề của máy tính, mà là vấn đề với ý nghĩa "liên tục". Ví dụ, không phải ai cũng đồng ý, hoặc đã đồng ý trong quá khứ, rằng Vũ trụ là liên tục (ví dụ: thang đo Planck có ngụ ý rằng không thời gian là rời rạc không? ). Đối với một số thứ (ví dụ, trạng thái năng lượng của electron và nhiều tính năng khác trong Cơ học lượng tử (sic)) chúng ta thậm chí biết rằng Vũ trụ không liên tục; đối với những người khác (ví dụ, vị trí ...) ban giám khảo vẫn chưa kết thúc (ít nhất là liên quan đến việc giải thích kết quả nghiên cứu ...). (Mặc dù vấn đề là ngay cả khi nó liên tục, chúng tôi không thể đo lường độ chính xác tùy ý => Heisenberg, v.v.).

Trong toán học, nghiên cứu tính liên tục (tức là thực tế) mở ra rất nhiều khía cạnh hấp dẫn, như lý thuyết đo lường, khiến nó hoàn toàn không thể lưu trữ một loại số / dữ liệu "liên tục".


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
DW

29

Máy tính biểu diễn một phần dữ liệu dưới dạng số bit hữu hạn (số không và số bit) và tập hợp tất cả các chuỗi bit hữu hạn là rời rạc. Bạn chỉ có thể làm việc với các số thực nếu bạn tìm thấy một số đại diện hữu hạn cho chúng. Ví dụ: bạn có thể nói "dữ liệu này tương ứng với số ", nhưng bạn không thể lưu trữ tất cả các chữ số của trong máy tính. Do đó, các chương trình máy tính hoạt động với số thực thực sự chỉ hoạt động trên một tập hợp con rời rạc của .pi RππR


Máy tính kỹ thuật số làm điều đó, nhưng không phải máy tính tương tự.
Drew

Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
DW

8

Để thêm vào tất cả những câu trả lời tuyệt vời này, đáng lưu ý rằng Alan Turing, khi xác định máy của mình, lập luận rằng số lượng biểu tượng cần phải hữu hạn (ngay cả khi lớn tùy ý) vì máy tính (có nghĩa là: con người) không thể phân biệt Tất cả các biểu tượng khác.

Dưới đây là một số trích đoạn từ bài báo năm 1936 của ông "Về những con số có thể tính toán được, với một Ứng dụng cho Entscheidungspro Hiệu":

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

Và sau đó trên phần 9:

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


1
Vui lòng sao chép hình ảnh để chúng có thể được lập chỉ mục bởi các tìm kiếm.
Raphael

7

Đó là tất cả trong việc thực hiện.

Nếu bạn nghĩ về nó, máy tính thực sự là thiết bị liên tục. Điều này dễ dàng được thể hiện bởi thực tế là tất cả các phương trình EM chi phối cách chúng hoạt động liên tục. Điều riêng biệt là các mô hình chúng tôi sử dụng để quyết định cách sử dụng các thiết bị điện toán này. Các máy trừu tượng chúng tôi sử dụng để mô tả tính toán đều rời rạc.

Lợi thế thực tế rất lớn của việc này là có được sự độc lập từ rất nhiều thách thức kiểm soát chất lượng. Nếu các mô hình máy tính của chúng ta tận dụng toàn bộ bản chất liên tục của bóng bán dẫn và tụ điện của chúng, thì chúng ta sẽ phải quan tâm đến việc chúng ta chế tạo mọi bóng bán dẫn ở mức độ cực lớn như thế nào. Chúng ta có thể thấy điều này trong thế giới âm thanh. Trong cộng đồng audiophiles trên thế giới, thật hợp lý khi chi 2000 đô la cho một bộ khuếch đại có thể có 10 bóng bán dẫn được lựa chọn rất cẩn thận và phù hợp, thực hiện chính xác điều liên tục mà họ muốn. Tương phản điều này với 1.400.000.000 bóng bán dẫn trong CPU Core i7 với chi phí khổng lồ 400 USD .

Vì các mô hình tính toán của chúng tôi rời rạc, chúng tôi có thể mô hình hóa tất cả các tín hiệu chúng tôi thấy trong máy tính dưới dạng tín hiệu riêng biệt cộng với một số thuật ngữ lỗi liên tục. Sau đó, chúng ta có thể lọc các lỗi chỉ bằng cách quan sát rằng chúng không phải là hình dạng phù hợp để trở thành một phần của tín hiệu rời rạc.

Một phần chính của điều này là loại bỏ các thuật ngữ thời gian trong các mô hình trừu tượng của chúng tôi. Nhiều mô hình của chúng tôi không đo thời gian theo một số quy trình vật lý, nhưng chống lại một số tín hiệu "logic" được gọi là đồng hồ. Nếu bạn làm gián đoạn đồng hồ, hệ thống sẽ ngừng di chuyển, nhưng không bị hỏng. Nó chỉ hoàn thành việc xóa bất kỳ lỗi tương tự nào mà nó có thể có, và chờ đợi xung rời rạc tiếp theo của đồng hồ. Loại bỏ các điều khoản thời gian liên tục đơn giản hóa mạnh mẽ tính toán và bằng chứng về tính toán. Thay vào đó, các khái niệm về thời gian của chúng tôi được đo lường một cách riêng biệt, như đã thấy trong các phân loại thuật toán P và NP.


7

Bởi vì:

  • Máy tính kỹ thuật số không thể lưu trữ số thực tùy ý.

  • Máy tính tương tự bị ảnh hưởng bởi tiếng ồn nhiệt (nếu điện tử), ma sát (nếu cơ học hoặc thủy lực), nhiễu loạn, nhạy cảm với sự thay đổi nhiệt độ, không thể tránh khỏi sự lão hóa và lão hóa. Đối phó với những khó khăn như vậy là những gì các nhà vật lý và kỹ sư (thực nghiệm) làm. Hầu hết khoa học máy tính chỉ đơn giản là trừu tượng hóa vật lý đi.

Dưới đây là một số bài viết về tính toán thực sự :

và đây là một bài báo về tính toán tương tự :


4

Thuật ngữ "máy tính" theo cách nói hiện đại có nghĩa là "máy tính kỹ thuật số"; bản chất của một máy tính kỹ thuật số là nó có số lượng hữu hạn các trạng thái riêng biệt. Người ta có thể có một cuộc tranh luận thú vị về việc lý do các máy tính kỹ thuật số giành được sự ưu ái so với máy tính tương tự chủ yếu là về thực tiễn kỹ thuật, hoặc chủ yếu là do nền tảng tốt hơn từ khoa học máy tính lý thuyết. Nhưng bất kể lý do là gì, máy tính kỹ thuật số là những gì chúng ta đã kết thúc và bất kỳ mô hình toán học hữu ích nào của máy tính kỹ thuật số (và do đó dữ liệu của nó) sẽ rời rạc thay vì liên tục.


2

Từ này databắt nguồn từ tiếng Latin datum, có nghĩa là một cái gì đó đã được đưa ra. Theo thời gian, dạng số nhiều đã thay đổi cách sử dụng và hiện được sử dụng phổ biến dưới dạng số ít và số nhiều. Nó cũng đã được liên kết với thông tin cụ thể.

Lưu ý rằng có một sự khác biệt giữa một mục thông tin (mốc) và biểu diễn của nó.

Lý thuyết thông tin liên quan đến (trong số những thứ khác) các mẩu thông tin rời rạc được đại diện bởi các biến. Đây là những thực thể đếm được. Ví dụ: vận tốc, vị trí, khối lượng, v.v ... đều là các đại lượng liên tục, nhưng rời rạc với nhau: không có sự biến đổi giữa khối lượng và vị trí. Khi các đại lượng này được biểu diễn bằng số, các mục dữ liệu của chúng, tuy nhiên chúng được biểu diễn, cũng rời rạc với nhau.

Mặt khác, phần lớn các máy tính hiện tại của chúng tôi sử dụng một số dạng điện tích để thể hiện thông tin. Khoản phí này có mặt hoặc không. Có dòng điện trong mạch hoặc không có. Điều này cũng rời rạc, nhưng nó không cần thiết! Đơn giản là vì cách mà công nghệ của chúng tôi đã phát triển mà chúng tôi sử dụng biểu diễn nhị phân. Có thể các phát triển trong Điện toán lượng tử sẽ thay đổi điều này trong tương lai gần. Cũng không thể tưởng tượng rằng các máy tính tương tự sẽ tạo ra sự hồi sinh và quan niệm của chúng tôi rằng các con số phải được biểu thị bằng nhị phân sẽ bị cuốn trôi!

Để tóm tắt: databao gồm các mục thông tin riêng biệt, mỗi mục là một mốc thời gian; trong khi mỗi mốc thời gian không cần phải được biểu diễn bằng toán học rời rạc, nhưng hiện tại hoàn toàn là do sự trùng hợp đương thời.


1
Lý thuyết thông tin cũng có thể xử lý các biến liên tục.
Yuval Filmus 17/03/2017


2

Tôi muốn thử thách tiền đề cơ bản của bạn:

Tại sao dữ liệu được coi là một thực thể toán học rời rạc chứ không phải là một thực thể liên tục?

Không phải vậy.

Ví dụ, nghiên cứu về Thuật toán là một lĩnh vực quan trọng của Khoa học Máy tính và có nhiều thuật toán hoạt động với dữ liệu liên tục. Có lẽ bạn đã quen thuộc với Thuật toán của Euclid để tính toán ước số chung lớn nhất của hai số tự nhiên, nhưng bạn có biết rằng Euclid cũng có phiên bản hình học của cùng một thuật toán tính toán số đo phổ biến dài nhất của hai dòng tương xứng? Đó là một ví dụ về thuật toán (và do đó là đối tượng nghiên cứu của khoa học máy tính) qua các số thực, tức là dữ liệu liên tục, mặc dù Euclid không nghĩ về nó theo cách này.

Có nhiều cách khác nhau để phân loại thuật toán, nhưng một cách được sử dụng, là phân loại chúng theo "tính liên tục" của chúng:

  • Thuật toán kỹ thuật số (thuật toán sự kiện rời rạc trên dữ liệu số):
    • biến thể số của thuật toán Euclid
    • chia tay dài, nhân, vv như được dạy ở trường
    • bất kỳ chương trình máy tính, chương trình tính toán, máy Turing
  • Dữ liệu phi kỹ thuật số, thuật toán sự kiện rời rạc (thuật toán trên dữ liệu liên tục, tuy nhiên vẫn có khái niệm "bước", tức là dữ liệu liên tục nhưng thời gian rời rạc):
    • biến thể hình học của thuật toán Euclid
    • thuật toán trên các số thực (ví dụ: Quy trình loại bỏ Gauss)
    • thuật toán trên các hàm liên tục (ví dụ: thuật toán chia đôi)
  • Thuật toán tương tự (thời gian liên tục, dữ liệu liên tục):
    • mạch điện
    • con quay cơ khí
  • Thuật toán lai (bất kỳ sự kết hợp nào ở trên)
    • robot

Các câu trả lời khác đã đề cập đến tính toán thực trong lý thuyết tính toán, một lĩnh vực quan trọng khác của Khoa học máy tính.

r

Hạn chế thực sự duy nhất (chơi chữ rất nhiều dự định) là dữ liệu đó không thể được biểu diễn bằng các máy tính kỹ thuật số thông thường. Bạn có thể nghĩ về các thuật toán trên dữ liệu liên tục, nhưng bạn không thể chạy chúng trên các máy tiêu chuẩn mà chúng ta thường sử dụng để chạy các thuật toán.

Đó là lý do chính tại sao dữ liệu liên tục không "hiển thị" như dữ liệu kỹ thuật số.

Tuy nhiên, việc thực hiện một thuật toán tương tự không thực sự cần phức tạp để tưởng tượng hoặc thậm chí để xây dựng. Ví dụ: đây là một triển khai của một thuật toán tương tự: Xe đạp chiến thắngTác giả Andrew Dressel  - Công việc riêng, CC BY-SA 3.0 , Liên kết

rqrq×rπq×π


"Có nhiều thuật toán hoạt động với dữ liệu liên tục" - Chúng ta có thể thảo luận rất lâu nếu những thứ đó được gọi là "thuật toán", nhưng đó sẽ là một sự phô trương về ngữ nghĩa, vì vậy, đừng. Vấn đề là, đây không phải là "thuật toán" chạy trên máy tính, mà trên các thiết bị siêu lý thuyết, được định nghĩa chính thức, siêu Turing.
Raphael

1
Tôi thấy ẩn dụ xe đạp gây hiểu lầm. Một cái gì đó tính toán một chức năng không phải là một máy tính, mà chúng ta mặc nhiên cho rằng nó là phổ quát ngày nay.
Raphael

1

π

Bây giờ, tập hợp tất cả các dữ liệu hữu hạn có thể có thể được đặt theo thứ tự từ điển, có nghĩa là tập hợp có thể đếm được. Nhưng, tập hợp các số thực liên tục là không thể đếm được, do đó, luôn có các số trong tính liên tục không thể được lưu trữ bởi một hệ thống tính toán nhất định. Từ điều này, chúng ta có thể kết luận rằng việc lưu trữ một số thực tùy ý đòi hỏi tài nguyên vô hạn.


1
Tôi nghĩ rằng đây là cầu xin câu hỏi . Hãy xem xét một máy tính lấy đầu vào của nó từ một mảnh giấy mà nó kiểm tra, và nó cho đầu ra của nó trên một mảnh giấy mà nó vẽ ra. Nếu dữ liệu liên tục như OP gợi ý, thì một máy tính như vậy có thể cực kỳ chính xác chỉ với một lượng dữ liệu hữu hạn.
ruakh

@ruakh Bạn đang nói về một cái gì đó giống như một máy Turing tương tự, ví dụ, nơi nó có thể đọc được độ dài chính xác của một đường được vẽ?
Đánh dấu H

Đúng chính xác. Theo tôi hiểu, đó là điều mà OP đang hỏi về.
ruakh

0

Dữ liệu không phải lúc nào cũng được coi là rời rạc. Lập trình khoa học thường liên quan đến số học dấu phẩy động. Lập trình viên thường giả vờ rằng các biến liên quan là liên tục, trong khi ghi nhớ vấn đề ổn định số, xuất phát từ thực tế là dữ liệu được lưu trữ chỉ với độ chính xác hữu hạn.


12
Điểm nổi rời rạc ... nếu một lập trình viên giả vờ liên tục, điều đó chỉ có nghĩa là kết quả không quan trọng, hoặc lập trình viên không hiểu anh ta đang làm gì.
AnoE 17/03/2017

2
Tôi tôn trọng không đồng ý.
Yuval Filmus 17/03/2017

6
@YuvalFilmus than ôi như dấu phẩy động là rời rạc, không còn gì để nói nữa. Mỗi khi một cái gì đó được đặt trong một máy tính thông thường, nó đã bị rời rạc.
Jean-Baptiste Yunès 17/03/2017

5
@AnoE có nghĩa là kết quả được tin cậy với độ chính xác nhất định, đó là ý nghĩa của Yuval khi "giả vờ". Bạn có thể nhận được một số kết quả có thể sử dụng, nhưng bạn phải làm mờ đi độ chính xác. Đối với bộ lớn nó có ý nghĩa. Tương phản điều này với các vấn đề cơ học cổ điển: bạn biết số đo của mình không chính xác. một đối tượng 3cm thực sự không có 3.000000000 ~ cm của lentgh. Bạn chỉ cần cắt độ chính xác của phép đo của bạn tại một số điểm hợp lý.
Mindwin 17/03/2017

6
Tôi không nghĩ câu hỏi là về cách trí óc của chúng ta hoạt động. Tôi nghĩ đó là về cách mọi thứ thực sự hoạt động. Lý do các số dấu phẩy động là gần đúng là vì chúng rời rạc. Rằng bạn nghĩ về chúng như là liên tục mặc dù chúng thực sự không giúp trả lời câu hỏi tại sao các giá trị lại rời rạc trong máy tính. Bên cạnh đó, cách suy nghĩ của bạn có thể nguy hiểm. Nhiều lỗi đã xảy ra do các lập trình viên nghĩ rằng dấu phẩy động là liên tục. Ngay cả những con số phổ biến mà chúng ta có xu hướng nghĩ chính xác như 1 phần mười hoặc 1 phần trăm là gần đúng ở điểm nổi.
JimmyJames 17/03/2017

-2
  • Để máy tính hoạt động với dữ liệu, dữ liệu phải tồn tại trong bộ nhớ có thể truy cập của máy tính
  • Bộ nhớ truy cập của máy tính là hữu hạn
  • Chỉ dữ liệu hữu hạn mới có thể tồn tại trong bộ nhớ có thể truy cập của máy tính
  • Các giá trị không rời rạc là vô hạn

Dữ liệu trong khoa học máy tính được coi là rời rạc.


elimt(1+1/t)t

Công thức bạn đã chỉ định là tốc ký - bạn không thể sử dụng nó trong bất kỳ phép tính nào có "câu trả lời" thực sự là cần thiết và do đó không có "công việc" có ý nghĩa nào có thể được thực hiện bởi máy tính. Bạn có thể viết một chương trình phân tích cú pháp văn bản nhỏ để đưa vào và nhổ các biểu diễn văn bản của các số vô tỷ nhưng biểu diễn số thực tế của các "giá trị" của số đó không thể được lưu trữ trong bộ nhớ - ngoài ra tôi có thể viết "đây là vô hạn" giấy và nói tôi đang cầm mọi thứ trong tay.
Repomeister

1
Bạn dường như đang giả định rằng cách duy nhất để tính toán trên một số thực là tạo ra sự mở rộng thập phân của nó. Điều đó chỉ đơn giản là không phải vậy.
David Richerby

2
Nếu bạn không có một giá trị thực tế, bạn có thực sự "tính toán" không? Chắc chắn rồi. Bất kỳ gói đại số máy tính nào cũng làm điều này mọi lúc. bằng cách trừu tượng hóa các giá trị thực tế thành bốn công thức bằng văn bản, hầu hết bạn có thể hiển thị các mối quan hệ giữa các thực thể chứ không phải giá trị thực của chúng trông giống như một giá trị thực đối với tôi. Nếu các tính toán không bao giờ giải quyết đến một giá trị thực tế thì đó chỉ là một xấp xỉ. Er, vì vậy, nếu tôi nói với bạn rằng diện tích của một vòng tròn bán kính 2 là , đó là "một xấp xỉ" nhưng nếu tôi nói với bạn rằng đó là 50.265 ... thì đó không phải là một xấp xỉ? 16 πeiπ=116π
David Richerby

1
@Repomeister Số lượng viên bi có lẽ là một số nguyên, vì vậy đây là một ví dụ ít thú vị hơn - bạn không cần số thực để thể hiện nó. Nhưng máy tính có thể làm toán chính xác trên các số thực, một kết quả nổi tiếng của Tarski (được cải tiến bởi Ben-Or, Kozen, & Reif trong thập niên 80). Cụ thể, nếu bạn viết ra một biểu thức bằng các số nguyên, toán tử so sánh , các toán tử trường và các biến một máy tính có thể quyết định xem có số thực làm cho biểu thức đúng hay không. + , - , x , ÷ x 1 , x 2 , ... , x n x 1 , ... , x n<,,>,,=,+,,×,÷x1,x2,,xnx1,,xn
Charles
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.