Những phần nào của đại số tuyến tính được sử dụng trong khoa học máy tính?


15

Tôi đã đọc Đại số tuyến tính và các ứng dụng của nó để giúp hiểu tài liệu khoa học máy tính (chủ yếu là học máy), nhưng tôi lo ngại rằng rất nhiều thông tin không hữu ích cho CS. Ví dụ, biết cách giải quyết hiệu quả các hệ phương trình tuyến tính dường như không hữu ích trừ khi bạn đang cố gắng lập trình một bộ giải phương trình mới. Ngoài ra, cuốn sách đã nói rất nhiều về nhịp, sự phụ thuộc tuyến tính và tính độc lập, khi một ma trận có nghịch đảo và các mối quan hệ giữa chúng, nhưng tôi không thể nghĩ ra bất kỳ ứng dụng nào trong CS này. Vậy, những phần nào của đại số tuyến tính được sử dụng trong CS?


2
Bạn đang yêu cầu lợi ích của riêng bạn, hay bạn là một giáo viên đang tìm kiếm các chiến lược để thúc đẩy sinh viên của bạn?
Raphael

Đại số tuyến tính là hữu ích trong nhiều phần của đồ họa máy tính (bạn có thể tìm thấy rất nhiều thông tin liên quan googling).
Juho

Giải hệ phương trình tuyến tính cực kỳ hữu ích trong khoa học máy tính. Ví dụ: en.m.wikipedia.org/wiki/Combinatorial_optimization
Ant P

1
Ma trận được sử dụng rất nhiều trong phát triển trò chơi, IE cho các phép chiếu, phép quay và toán học tứ phương.
Paul

@Paulpro Câu hỏi dành cho các ứng dụng của đại số tuyến tính (cơ thể của công việc), không phải ma trận (một tập hợp các đối tượng).
Raphael

Câu trả lời:


11

Các phần mà bạn đề cập là các khái niệm cơ bản của đại số tuyến tính. Bạn không thể hiểu các khái niệm nâng cao hơn (giả sử, giá trị riêng và hàm riêng) trước khi hiểu các khái niệm cơ bản. Không có lối tắt trong toán học. Nếu không có sự hiểu biết trực quan về các khái niệm về nhịp và độc lập tuyến tính, bạn sẽ không đi xa được trong đại số tuyến tính.

Một số thuật toán chỉ hoạt động với ma trận xếp hạng đầy đủ - Bạn có biết điều đó có nghĩa là gì không? Bạn có biết những gì có thể làm cho một ma trận không đầy đủ thứ hạng? Làm thế nào để xử lý việc này? Bạn sẽ không có manh mối nếu bạn không biết độc lập tuyến tính là gì.

Thuật toán loại bỏ Gaussian được sử dụng để giải các phương trình tuyến tính thực sự có thể không ổn định về số lượng nếu được thực hiện không đúng cách, và đây là điều mà bạn có thể phải lo lắng trong một số trường hợp. Không hiểu thuật toán, bạn sẽ không biết vấn đề đến từ đâu và liệu bạn có thể làm gì với nó không - không phải ở cấp độ thuật toán để giải phương trình tuyến tính, mà là ở mức độ đưa ra các phương trình tuyến tính chính xác để giải.

Nói tóm lại, đừng lười biếng, và hãy tin rằng những điều này là hữu ích.


5
"Hãy tin rằng những điều này là hữu ích" - tốt, không phải tất cả chúng ta đều biết các giáo viên tải bài giảng của họ với những người thân yêu của họ mà không quan tâm đến sự hữu ích chung? Sinh viên thực sự không thể nói sự khác biệt, nhưng họ cũng không nên tin tưởng một cách mù quáng. "Tôi sẽ cần cái này để làm gì?" là một câu hỏi công bằng, nhưng "Nó chỉ để rèn luyện trí óc của bạn" cũng là một câu trả lời công bằng.
Raphael

9
"Đừng lười biếng" đặt ra một giai điệu không mang tính xây dựng. Tôi đã rất tò mò, tham gia, và không phải tất cả các sinh viên lười biếng hỏi tôi câu hỏi này. Tôi nghĩ rằng một số lượng lớn sinh viên CS tìm thấy lớp Đại số tuyến tính truyền thống là thế giới ngoài những gì họ nghĩ họ cần. Sở thích của họ là điện toán và lập trình và không nhất thiết phải là toán học. Cần hoặc muốn một số bối cảnh và động lực không phải là một dấu hiệu của sự lười biếng. Chúng ta đừng vẽ nó như vậy.
Logan Mayfield

@Raphael, Logan Mayfield, các bạn có biết máy học liên quan đến đại số tuyến tính như thế nào không? Mặc dù có một chút cụ thể, Yuval khá hay ở đây về các ví dụ mà anh ấy đã đề cập. Câu hỏi của OP không thể được trả lời đầy đủ chỉ trong một bài đăng trên Internet.
nhạcliftsme

7

Đại số tuyến tính đôi khi cực kỳ hữu ích và mạnh mẽ trong các thuật toán đồ thị. Với định lý cây ma trận, bạn có thể đếm số lượng cây bao trùm một cách hiệu quả mà đồ thị có (bạn cần hiểu giá trị bản địa). Một ứng dụng khó khăn hơn, trong đó bạn cần nắm vững hơn về đại số tuyến tính là thuật toán FKT để tính toán số lượng khớp hoàn hảo trong đồ thị phẳng trong thời gian đa thức.

Có nhiều ví dụ thú vị hơn về việc sử dụng đại số tuyến tính trong lý thuyết đồ thị đại sốlý thuyết đồ thị phổ . Các thuật toán phát sinh không chỉ để đếm các vấn đề như hai ví dụ tôi đã đưa ra. Chẳng hạn, bạn cũng có thể kiểm tra kết nối hoặc tính đường kính của đồ thị .


Người ta tự hỏi tại sao người ta lại muốn đếm số lượng cây bao trùm hoặc kết hợp hoàn hảo. Cái này tốt cho cái gì? Bạn có một ứng dụng trong thế giới thực trong tâm trí?
Yuval Filmus 2/03/2015

@YuvalFilmus Tôi không, và có thể khó hơn để đưa ra các ứng dụng đếm vấn đề để bắt đầu. Tôi nghĩ cả hai đều thú vị chủ yếu từ góc độ lý thuyết, mặc dù mục wiki của FKT mang lại một số lịch sử và động lực. Dù sao, điểm chính là đại số tuyến tính rất hữu ích để phát triển các thuật toán đồ thị, và do đó có các ứng dụng trong khoa học máy tính.
Juho

6

Một trong những cách sử dụng đại số tuyến tính được biết đến nhiều nhất là trong thuật toán Pagerank của Google :

Các giá trị PageRank là các mục nhập của hàm riêng bên trái chiếm ưu thế của ma trận kề.


3

Hầu hết mọi thứ liên quan đến đồ họa máy tính, hoạt hình, thị giác máy tính, xử lý hình ảnh, tính toán khoa học hoặc mô phỏng các hiện tượng vật lý sẽ liên quan đến việc sử dụng rộng rãi các vectơ và ma trận (đại số tuyến tính) từ những điều đơn giản như biểu diễn các phép biến đổi và định hướng không gian, cho đến các thuật toán rất phức tạp. Những thứ này từng là lĩnh vực của siêu máy tính, nhưng bây giờ những lĩnh vực rất giống nhau này là cốt lõi của tất cả các ứng dụng tuyệt vời nhất trên máy tính để bàn, điện thoại và mọi nơi khác, từ trò chơi video đến chụp ảnh tính toán đến xe tự lái. Đại số tuyến tính có ở khắp mọi nơi.


2

Có rất nhiều thuật toán và kỹ thuật dựa trên đại số ma trận. Và điều đó thật tuyệt. Phân tích thành phần chính là một ví dụ về một số đại số tuyến tính ứng dụng khá hữu ích. Điều tương tự cũng có thể nói về phân tích Fourier, cũng có nguồn gốc từ tính trực giao và các sản phẩm bên trong. Vì vậy, có những ứng dụng trực tiếp.

NHƯNG , thậm chí quan trọng hơn, tham gia một lớp đại số tuyến tính là có giá trị bởi vì nó dạy bạn suy nghĩ theo một cách nhất định. Hầu hết các lớp đại số tuyến tính tốt đều nhấn mạnh vào khái quát, logic và bằng chứng. Là một cái gì đó đúng nói chung, hoặc chỉ một số trường hợp cụ thể, phổ biến? Làm thế nào bạn có thể chắc chắn? Có thể suy nghĩ về cách chứng minh các giả định của bạn là tốt bởi vì nó giúp bạn tránh cho mình khỏi các giả định xấu và viết mã không khái quát theo cách bạn giả định. Nó cũng giúp bạn suy nghĩ về cách khái quát hóa những thứ có thể khó khái quát hóa, và điều đó cho phép bạn giải quyết các vấn đề lớn hơn.

Tóm lại, thật tốt khi nhớ rằng đại số tuyến tính là tốt bởi vì nó nâng trọng lượng cho phần não của bạn rất hữu ích trong khoa học máy tính.


0

Giải hệ phương trình tuyến tính (có thể được thực hiện bằng phương pháp loại bỏ Gaussian), lập trình tuyến tính (có thể giải bằng phương pháp đơn giản), bình phương nhỏ nhất và cảm biến nén (xem bài viết Wikipedia) là những vấn đề thực tế nảy sinh trong nhiều lĩnh vực ứng dụng. Đại số tuyến tính giúp phát triển các thuật toán chính xác và hiệu quả cho những vấn đề này.

Xem văn bản [Cormen, Leiserson, Rivest và Stein, "Giới thiệu về thuật toán, phiên bản thứ ba"], trong đó Chương 28 là về hoạt động ma trận và Chương 29 là về lập trình tuyến tính.

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.