Thuật toán máy tính là gì và cách thức hoạt động của chúng?

Mục lục:

Thuật toán máy tính là gì và cách thức hoạt động của chúng?
Thuật toán máy tính là gì và cách thức hoạt động của chúng?

Video: Thuật toán máy tính là gì và cách thức hoạt động của chúng?

Video: Thuật toán máy tính là gì và cách thức hoạt động của chúng?
Video: NHẤT TRÊN ĐỜI | VAnh. (OFFICIAL MV) - YouTube 2024, Có thể
Anonim
Trừ khi bạn tham gia toán học hoặc lập trình, từ "thuật toán" có thể là tiếng Hy Lạp đối với bạn, nhưng đó là một trong những khối xây dựng của mọi thứ bạn đang sử dụng để đọc bài viết này. Dưới đây là giải thích nhanh về chúng là gì và cách chúng hoạt động.
Trừ khi bạn tham gia toán học hoặc lập trình, từ "thuật toán" có thể là tiếng Hy Lạp đối với bạn, nhưng đó là một trong những khối xây dựng của mọi thứ bạn đang sử dụng để đọc bài viết này. Dưới đây là giải thích nhanh về chúng là gì và cách chúng hoạt động.

Tuyên bố từ chối trách nhiệm: Tôi không phải là giáo viên toán hoặc khoa học máy tính, vì vậy không phải tất cả các thuật ngữ tôi sử dụng đều mang tính kỹ thuật. Đó là bởi vì tôi đang cố giải thích mọi thứ bằng tiếng Anh đơn giản cho mọi người không hoàn toàn thoải mái với toán học. Điều đó đang được nói, có một số môn toán liên quan, và điều đó là không thể tránh khỏi. Chuyên viên toán học, cảm thấy tự do để giải thích hoặc giải thích tốt hơn trong các ý kiến, nhưng xin vui lòng, giữ cho nó đơn giản cho các toán học disinclined giữa chúng tôi.

Hình ảnh của Ian Ruotsala

Thuật toán là gì?

Từ 'thuật toán' có từ nguyên tương tự như 'đại số', ngoại trừ việc điều này đề cập đến chính nhà toán học người Ả Rập, al-Khwarizmi (chỉ là một miếng ngon thú vị). Một thuật toán, đối với những người không phải là lập trình viên trong chúng ta, là một tập hợp các lệnh đưa đầu vào, A và cung cấp đầu ra, B, thay đổi dữ liệu liên quan theo một cách nào đó. Thuật toán có nhiều ứng dụng khác nhau. Trong toán học, chúng có thể giúp tính toán các hàm từ các điểm trong một tập dữ liệu, trong số nhiều thứ nâng cao hơn. Ngoài việc sử dụng chúng trong lập trình, chúng còn đóng vai trò quan trọng trong những thứ như nén tệp và mã hóa dữ liệu.

Một bộ hướng dẫn cơ bản

Giả sử bạn của bạn đang gặp bạn trong cửa hàng tạp hóa và bạn đang hướng dẫn anh ấy hướng tới bạn. Bạn nói những thứ như “đi qua cánh cửa bên phải,” “vượt qua phần cá ở bên trái,” và “nếu bạn thấy sữa, bạn truyền cho tôi.” Thuật toán hoạt động như thế. Chúng tôi có thể sử dụng sơ đồ để minh họa hướng dẫn dựa trên các tiêu chí mà chúng tôi biết trước hoặc tìm hiểu trong quá trình.

(hình ảnh mang tên "Băng thông phá vỡ" EDIT: lịch sự của Trigger và Freewheel)
(hình ảnh mang tên "Băng thông phá vỡ" EDIT: lịch sự của Trigger và Freewheel)

Từ START, bạn sẽ đi xuống con đường, và tùy thuộc vào những gì xảy ra bạn theo "dòng chảy" đến một kết quả cuối cùng. Lưu đồ là các công cụ trực quan có thể dễ hiểu hơn đại diện cho một tập hợp các lệnh được sử dụng bởi máy tính. Tương tự như vậy, các thuật toán giúp làm tương tự với nhiều mô hình dựa trên toán học hơn.

Đồ thị

Hãy sử dụng biểu đồ để minh họa các cách khác nhau mà chúng tôi có thể cung cấp chỉ đường.

Chúng tôi có thể biểu thị biểu đồ này dưới dạng kết nối giữa tất cả các điểm của nó. Để tái tạo hình ảnh này, chúng tôi có thể đưa ra một bộ hướng dẫn cho người khác.
Chúng tôi có thể biểu thị biểu đồ này dưới dạng kết nối giữa tất cả các điểm của nó. Để tái tạo hình ảnh này, chúng tôi có thể đưa ra một bộ hướng dẫn cho người khác.

Phương pháp 1

Chúng ta có thể biểu diễn điều này như là một loạt các điểm, và thông tin sẽ theo dạng biểu đồ tiêu chuẩn = {(x1, y1), (x2, y2),…, (xn, yn)}.

graph = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)}

Nó khá dễ dàng để vẽ từng điểm, cái kia, và kết nối chúng với điểm trước đó. Tuy nhiên, hãy tưởng tượng một đồ thị với một nghìn điểm hoặc nhiều phân đoạn tất cả sẽ đi theo mọi cách. Danh sách đó sẽ có rất nhiều dữ liệu, phải không? Và sau đó phải kết nối từng cái, từng cái một, có thể là một cơn đau.

Phương pháp 2

Một điều khác chúng ta có thể làm là đưa ra một điểm bắt đầu, độ dốc của đường thẳng giữa nó và điểm tiếp theo, và chỉ ra nơi mong đợi điểm tiếp theo bằng cách sử dụng biểu đồ tiêu chuẩn của đồ thị = {(điểm bắt đầu}, [m1, x1, h1 ],…, [Mn, xn, hn]} Ở đây, biến 'm' đại diện cho độ dốc của đường thẳng, 'x' biểu diễn hướng để đếm trong (cho dù x hoặc y), và 'h' cho bạn biết cách bạn có thể nhớ để vẽ một điểm sau mỗi chuyển động.

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}

Bạn sẽ kết thúc với cùng một biểu đồ. Bạn có thể thấy rằng ba thuật ngữ cuối cùng trong biểu thức này giống nhau, vì vậy chúng tôi có thể cắt giảm bằng cách chỉ nói “lặp lại ba lần” theo một cách nào đó. Giả sử bất cứ khi nào bạn thấy biến 'R' xuất hiện, điều đó có nghĩa là lặp lại điều cuối cùng. Chung ta co thể lam được việc nay:

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}

Điều gì sẽ xảy ra nếu các điểm riêng lẻ không thực sự quan trọng và chỉ có chính đồ thị đó là gì? Chúng ta có thể củng cố ba phần cuối cùng như sau:

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}

Nó rút ngắn mọi thứ lên một chút so với trước đây.

Phương pháp 3

Hãy thử làm theo cách khác.

y=0, 0≤x≤3 x=0, 0≤y≤3 y=x, 3≤x≤5 y=2.5x-7.5, 5≤x≤7 y=-3x+29, 7≤x≤8 y=-3x+29, 8≤x≤9 y=-3x+29, 9≤x≤10

Ở đây chúng ta có nó trong các thuật ngữ đại số thuần túy. Một lần nữa, nếu bản thân các điểm không quan trọng và chỉ có biểu đồ, chúng tôi có thể hợp nhất ba mục cuối cùng.

y=0, 0≤x≤3 x=0, 0≤y≤3 y=x, 3≤x≤5 y=2.5x-7.5, 5≤x≤7 y=-3x+29, 7≤x≤10

Bây giờ, phương pháp nào bạn chọn tùy thuộc vào khả năng của bạn. Có thể bạn tuyệt vời với toán học và vẽ đồ thị, vì vậy bạn chọn tùy chọn cuối cùng. Có thể bạn đang điều hướng tốt, vì vậy bạn chọn tùy chọn thứ hai. Tuy nhiên, trong lĩnh vực máy tính, bạn đang thực hiện nhiều loại nhiệm vụ khác nhau và khả năng của máy tính không thực sự thay đổi. Do đó, các thuật toán được tối ưu hóa cho các tác vụ mà chúng hoàn thành.

Một điểm quan trọng cần lưu ý là mỗi phương pháp dựa vào một khóa. Mỗi bộ hướng dẫn là vô dụng trừ khi bạn biết phải làm gì với chúng. Nếu bạn không biết rằng bạn được cho là âm mưu mỗi điểm và kết nối các dấu chấm, tập hợp các điểm đầu tiên có nghĩa là không có gì. Trừ khi bạn biết mỗi biến có nghĩa là gì trong phương pháp thứ hai, bạn sẽ không biết cách áp dụng chúng, giống như khóa cho mật mã. Chìa khóa đó cũng là một phần không thể thiếu của việc sử dụng các thuật toán, và thường, khóa đó được tìm thấy trong cộng đồng hoặc thông qua một “tiêu chuẩn”.

Nén tệp

Khi bạn tải xuống tệp.zip, bạn trích xuất nội dung để bạn có thể sử dụng bất kỳ nội dung nào bên trong nó.Ngày nay, hầu hết các hệ điều hành có thể đi sâu vào các tệp.zip giống như chúng là các thư mục bình thường, làm mọi thứ trong nền. Trên máy tính Windows 95 của tôi hơn một thập kỷ trước, tôi đã phải trích xuất tất cả mọi thứ bằng tay trước khi tôi có thể thấy bất cứ điều gì nhiều hơn tên tập tin bên trong. Đó là vì những gì được lưu trữ trên đĩa dưới dạng tệp.zip không ở dạng có thể sử dụng được. Hãy nghĩ về một chiếc ghế dài kéo ra. Khi bạn muốn sử dụng nó như một chiếc giường, bạn phải loại bỏ các đệm và mở ra nó, chiếm nhiều không gian hơn. Khi bạn không cần nó, hoặc bạn muốn vận chuyển nó, bạn có thể gấp nó trở lại.

Các thuật toán nén được điều chỉnh và tối ưu hóa đặc biệt cho các loại tệp mà chúng được nhắm mục tiêu. Ví dụ, các định dạng âm thanh sử dụng một cách khác để lưu trữ dữ liệu, khi được giải mã bằng codec âm thanh, sẽ cung cấp tệp âm thanh tương tự với dạng sóng ban đầu. Để biết thêm thông tin về sự khác biệt đó, hãy xem bài viết trước của chúng tôi, Sự khác biệt giữa tất cả các định dạng âm thanh đó là gì? Định dạng âm thanh lossless và các tệp.zip có một điểm chung: cả hai đều tạo ra dữ liệu ban đầu ở dạng chính xác của nó sau quá trình giải nén. Các codec âm thanh mất mát sử dụng các phương tiện khác để tiết kiệm dung lượng đĩa, chẳng hạn như các tần số cắt tỉa không thể nghe được bằng tai người và làm mịn dạng sóng trong các phần để loại bỏ một số chi tiết. Cuối cùng, trong khi chúng tôi có thể không thực sự có thể nghe thấy sự khác biệt giữa một MP3 và một ca khúc CD, có chắc chắn là một thâm hụt thông tin trong các cựu.

Mã hóa dữ liệu

Thuật toán cũng được sử dụng khi bảo vệ dữ liệu hoặc đường truyền thông. Thay vì lưu trữ dữ liệu để nó sử dụng không gian đĩa ít hơn, nó được lưu trữ theo cách không thể phát hiện bởi các chương trình khác. Nếu ai đó đánh cắp ổ đĩa cứng của bạn và bắt đầu quét nó, họ có thể lấy dữ liệu ngay cả khi bạn xóa các tệp vì bản thân dữ liệu vẫn còn ở đó, mặc dù vị trí chuyển tiếp đến nó đã biến mất. Khi dữ liệu được mã hóa, mọi thứ được lưu trữ sẽ không giống như dữ liệu. Nó thường trông ngẫu nhiên, như thể phân mảnh đã tích tụ theo thời gian. Bạn cũng có thể lưu trữ dữ liệu và làm cho nó xuất hiện dưới dạng một loại tệp khác. Các tệp hình ảnh và tệp nhạc tốt cho điều này, vì chúng có thể khá lớn mà không có sự nghi ngờ, ví dụ. Tất cả điều này được thực hiện bằng cách sử dụng các thuật toán toán học, có một số loại đầu vào và chuyển đổi nó thành một loại đầu ra khác, rất cụ thể. Để biết thêm thông tin về cách mã hóa hoạt động, hãy kiểm tra HTG Giải thích: Mã hóa là gì và hoạt động như thế nào?
Thuật toán cũng được sử dụng khi bảo vệ dữ liệu hoặc đường truyền thông. Thay vì lưu trữ dữ liệu để nó sử dụng không gian đĩa ít hơn, nó được lưu trữ theo cách không thể phát hiện bởi các chương trình khác. Nếu ai đó đánh cắp ổ đĩa cứng của bạn và bắt đầu quét nó, họ có thể lấy dữ liệu ngay cả khi bạn xóa các tệp vì bản thân dữ liệu vẫn còn ở đó, mặc dù vị trí chuyển tiếp đến nó đã biến mất. Khi dữ liệu được mã hóa, mọi thứ được lưu trữ sẽ không giống như dữ liệu. Nó thường trông ngẫu nhiên, như thể phân mảnh đã tích tụ theo thời gian. Bạn cũng có thể lưu trữ dữ liệu và làm cho nó xuất hiện dưới dạng một loại tệp khác. Các tệp hình ảnh và tệp nhạc tốt cho điều này, vì chúng có thể khá lớn mà không có sự nghi ngờ, ví dụ. Tất cả điều này được thực hiện bằng cách sử dụng các thuật toán toán học, có một số loại đầu vào và chuyển đổi nó thành một loại đầu ra khác, rất cụ thể. Để biết thêm thông tin về cách mã hóa hoạt động, hãy kiểm tra HTG Giải thích: Mã hóa là gì và hoạt động như thế nào?

Thuật toán là các công cụ toán học cung cấp nhiều ứng dụng trong khoa học máy tính. Họ làm việc để cung cấp một con đường giữa một điểm bắt đầu và một điểm kết thúc một cách nhất quán, và cung cấp các hướng dẫn để làm theo nó. Biết nhiều hơn những gì chúng tôi đánh dấu? Chia sẻ các giải thích của bạn trong các ý kiến!

Đề xuất: