✨Ma trận thưa

Ma trận thưa

right|thumb|Một ma trận thưa thớt thu được khi giải một [[phương pháp phần tử hữu hạn trong 2 chiều. Các phần tử không có giá trị bằng 0 được hiển thị bằng màu đen.]]

Trong giải tích số và khoa học tính toán, một ma trận thưa (hay mảng thưa, tiếng Anh: sparse matrix hay sparse array) là một ma trận toán học mà trong đó đa số phần tử có giá trị là 0. Không có định nghĩa chặt chẽ bao nhiêu phần tử cần bằng 0 để ma trận được coi là thưa nhưng với một tiêu chí chung là số phần tử khác 0 phải xấp xỉ bằng số hàng hoặc các cột. Ngược lại, nếu ma trận có nhiều các phần tử khác 0, thì ma trận đó được coi là đặc (dày, dầy). Số phần tử có giá trị bằng 0 chia cho tổng số phần tử (ví dụ, M x N với một ma trận có kích thước M x N) đôi khi gọi là tính thưa (sparsity) của ma trận.

Về mặt khái niệm, sự thưa thớt tương ứng với các hệ thống có ít sự tương tác theo từng cặp. Ví dụ, một hàng người xếp hàng chờ mua đồ trước một cửa hàng ăn nhanh, mỗi người cách nhau 5 mét và không có tiếp xúc cơ thể với nhau thì đây được coi là một hệ thống thưa thớt. Ngược lại, nếu một hàng người này nắm tay nhau (hay đứng cách nhau cự ly gần hơn, khoảng 30 cm) thì được xem là một hệ thống dày đặc. Khái niệm thưa thớt rất hữu ích trong toán học tổ hợp và các lĩnh vực ứng dụng như lý thuyết mạng và giải tích số, thường có mật độ dữ liệu hoặc kết nối quan trọng thấp. Các ma trận thưa quy mô lớn thường xuất hiện trong các ứng dụng khoa học hay kỹ thuật khi giải quyết các vấn đề về phương trình vi phân riêng phần.

Khi lưu trữ và thao tác với ma trận thưa trên máy tính, việc sử dụng các thuật toán và cấu trúc dữ liệu chuyên dụng là điều hữu ích và thường cần thiết để tận dụng cấu trúc thưa thớt của ma trận.

Trong lĩnh vực học máy, các máy tính chuyên dụng được tạo ra dành cho các ma trận thưa rất phổ biến. Các thuật toán và cấu trúc dữ liệu tiêu chuẩn dùng để thực hiện các phép tính với ma trận dày thường chậm và không hiệu quả khi áp dụng cho các ma trận thưa có kích thước lớn. Lý do là vì bộ nhớ máy tính buộc phải lãng phí tài nguyên khi lưu trữ các giá trị 0 xuất hiện tần suất cao trong ma trận thưa. Về bản chất, dữ liệu thưa sẽ được nén lại dễ dàng hơn và do đó giảm thiểu yêu cầu lưu trữ trên máy tính. Một số ma trận thưa có kích thước lớn không thể thực thi bằng các thuật toán tiêu chuẩn như đã làm với các ma trận dày.

Lưu trữ ma trận thưa

Một ma trận thường được lưu lại bằng một mảng hai chiều. Mỗi phần tử trong mảng thể hiện một phần tử của ma trận và được truy cập bằng hai mảng và . Thông thường, là chỉ số hàng, đánh số thứ tự từ trên xuống dưới, và là chỉ số cột, đánh số thứ tự từ trái sang phải. Với một ma trận , dung lượng bộ nhớ cần thiết để lưu trữ ma trận ở định dạng này tương ứng với (bỏ qua thực tế là các kích thước của ma trận cũng cần được lưu trữ).

Với trường hợp ma trận thưa, yêu cầu giảm bộ nhớ lưu trữ một cách đáng kể có thể được thực hiện bằng cách chỉ lưu các phần tử khác 0. Tùy thuộc vào số lượng và sự phân bố của các phần tử khác 0, các cấu trúc dữ liệu khác nhau có thể được sử dụng và tiết kiệm rất nhiều bộ nhớ khi so sánh với cách lưu trữ cơ bản (như mảng 2 chiều). Tuy nhiên, khi làm điều này thì phải đánh đổi lại việc truy cập các phần tử đơn lẻ trở nên phức tạp hơn và cần có các cấu trúc bổ sung để có thể khôi phục ma trận ban đầu một cách rõ ràng.

Các định dạng có thể được chia thành hai nhóm:

  • Những định dạng hỗ trợ sửa đổi hiệu quả, chẳng hạn như DOK (từ điển khóa), LIL (danh sách các danh sách) hoặc COO (danh sách tọa độ). Các định dạng này thường được sử dụng để xây dựng các ma trận.
  • Những định dạng hỗ trợ truy cập hiệu quả và hoạt động ma trận, chẳng hạn như CSR (hàng thưa thớt được nén) hoặc CSC (cột thưa thớt được nén).

Phần mềm

Nhiều thư viện phần mềm hỗ trợ việc xử lý ma trận thưa và cung cấp bộ giải cho các phương trình ma trận thưa. Sau đây là các thư viện mã nguồn mở:

  • [http://faculty.cse.tamu.edu/davis/suitesparse.html SuiteSparse], một bộ các thuật toán ma trận thưa, hướng tới giải pháp trực tiếp của các hệ thống tuyến tính thưa.
  • Portable, Extensible Toolkit for Scientific Computation, một thư viện C lớn, chứa nhiều bộ giải ma trận khác nhau cho nhiều định dạng lưu trữ ma trận.
  • Trilinos, một thư viện C ++ lớn, với các thư viện con dành riêng cho việc lưu trữ các ma trận dày/thưa và giải pháp của các hệ thống tuyến tính tương ứng.
  • Eigen (thư viện C++) là một thư viện C ++ chứa một số trình giải ma trận thưa. Tuy nhiên, không có trình giải nào chứa tính toán song song.
  • MUMPS (phần mềm) (MUltifrontal Massively Parallel sparse direct Solver), viết bằng Fortran90, là một trình giải trước (frontal solver).
  • Dune (phần mềm), một thư viện phần tử hữu hạn mà cũng có một thư viện con cho các hệ thống tuyến tính thưa và các giải pháp kèm theo.
  • [http://pastix.gforge.inria.fr/ PaStix].
  • [http://crd-legacy.lbl.gov/~xiaoye/SuperLU/ SuperLU].
  • Armadillo (thư viện C++) cung cấp một trình bao bọc (wrapper) C ++ thân thiện với người dùng dành cho BLAS và LAPACK.
  • SciPy cung cấp hỗ trợ cho một số định dạng ma trận thưa, đại số tuyến tính và bộ giải.
  • [https://cran.r-project.org/web/packages/spam/index.html SPArse Matrix (spam)] gói R cho các ma trận thưa.
  • [https://reference.wolfram.com/language/guide/SparseArrays.html Wolfram Language] xử lý các mảng thưa với số phần tử theo nghĩa đen.
  • ALGLIB là một thư viện C++ và C# với hỗ trợ đại số tuyến tính thưa.
  • ARPACK thư viện Fortran 77 dành cho thao tác và chéo hóa ma trận thưa, sử dụng thuật toán Arnoldi.
  • [https://www.netlib.org/sparse/ SPARSE], gói tham khảo (đã cũ) của Viện Tiêu chuẩn và Kỹ thuật quốc gia (Hoa Kỳ) dành cho (số thực hoặc số phức) đường chéo ma trận thưa.
  • SLEPc, thư viện dành cho giải pháp hệ thống tuyến tính quy mô lớn và các ma trận thưa.
  • [https://www.sympiler.com/ Sympiler], một trình tạo mã theo lĩnh vực cụ thể và thư viện để giải các hệ thống tuyến tính và các bài toán lập trình bậc hai.

Lịch sử

Thuật ngữ ma trận thưa có thể được đặt ra bởi Harry Markowitz người khởi xướng một số công việc tiên phong nhưng sau đó rời bỏ lĩnh vực này.

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
right|thumb|Một ma trận thưa thớt thu được khi giải một [[phương pháp phần tử hữu hạn trong 2 chiều. Các phần tử không có giá trị bằng 0 được hiển thị bằng màu đen.]] Trong
phải|Mỗi phần tử của một ma trận thường được ký hiệu bằng một biến với hai chỉ số ở dưới. Ví dụ, a2,1 biểu diễn phần tử ở hàng thứ hai và cột thứ nhất
nhỏ|Một ma trận gồm 168×168 phần tử, được chia thành các khối có cỡ 12×12, 12×24, 24x12, và 24×24. Các phần tử khác 0 có màu xanh và các phần tử 0 có màu xám.
Trong đại số tuyến tính, một ma trận vuông A được gọi là **chéo hóa được** hay **không khiếm khuyết** nếu nó đồng dạng với một ma trận đường chéo, tức là tồn tại một
Trong Toán học và Khoa học máy tính, **ma trận kề** (tiếng Anh: _adjacency matrix_) cho một đồ thị hữu hạn _G_ gồm _n_ đỉnh là một ma trận _n_ × _n_, trong đó, các
thumb|right|Ma trận chuyển vị **A**T của ma trận **A** có thể có được bằng cách đảo các phần tử của nó theo đường chéo chính. Lặp lại bước trên đối với ma trận chuyển vị
nhỏ| Các ma trận [[Ma trận Toeplitz|Toeplitz đơn vị thấp hơn nhị phân, nhân với các phép toán **F** 2. Chúng tạo thành bảng Cayley của Z 4 và tương ứng với các lũy thừa
Trong lý thuyết đồ thị, **ma trận Laplace**, hay còn gọi là ma trận Kirchhoff, hoặc ma trận dẫn nạp, là một cách biểu diễn đồ thị bằng ma trận. Theo định lý Kirchhoff, nó
**Trần Thái Tổ** (chữ Hán: 陳太祖, 1184 – 17 tháng 2, 1234), tên húy **Trần Thừa** (陳承), còn có miếu hiệu là **Trần Huy Tông** (陳徽宗), là Thái thượng hoàng đầu tiên của nhà Trần.
**Trận Watling Street** là tên thường gọi của trận đánh quyết định chấm dứt cuộc khởi nghĩa Boudica của người bản địa Anh chống nền đô hộ La Mã, xảy ra khoảng năm 60 hoặc
**Mã Thiên Thừa** (, 1570 – 1613), tự **Tiếu Dung**, là Tuyên phủ sứ (tương đương Thổ ti) huyện tự trị dân tộc Thổ Gia Thạch Trụ vào đời Minh. ## Thân thế Trong những
**Trận Yarmouk** (, còn được viết là _Yarmuk_, _Yarmuq_, hay trong tiếng Hy Lạp là _Hieromyax_, Ἱερομύαξ, hoặc _Iermouchas_, Ιερμουχάς) là một trận đánh lớn giữa quân đội Hồi giáo Rashidun với quân đội của
**_Ma trận: Hồi sinh_** (tựa gốc tiếng Anh: **The Matrix Resurrections**) là phim điện ảnh Mỹ thuộc thể loại hành động khoa học viễn tưởng, do Lana Wachowski làm biên kịch, đạo diễn và sản
**Ma trận đồng xuất hiện** hay **phân bố đồng xuất hiện** (còn được gọi là _ma trận đồng xuất hiện mức xám_ - GLCMs) là một ma trận được định nghĩa trên một hình ảnh.
**Trận Hadrianopolis** (ngày 9 tháng 8 năm 378), còn được gọi là **Trận Adrianopolis**, là trận chiến giữa Quân đội La Mã do Hoàng đế Valens thân chinh thống lĩnh và quân nổi dậy Goth
**Nhà Trần** (chữ Nôm: 茹陳, chữ Hán: 陳朝, Hán Việt: _Trần triều_) là một triều đại quân chủ cai trị nước Đại Việt từ năm 1226 đến năm 1400. Đây là triều đại được lưu
**Trận Đồng Quan** hay **Chiến dịch Đồng Quan** (chữ Hán: 潼關之戰 _Đồng Quan chi chiến_) là trận đánh chiến lược diễn ra giữa quân đội triều đình trung ương nhà Đông Hán do thừa tướng
**Trần Thái Tông** (chữ Hán: 陳太宗 9 tháng 7 năm 1218 – 5 tháng 5 năm 1277), tên khai sinh là **Trần Cảnh** (陳煚), là vị hoàng đế đầu tiên của Hoàng triều Trần nước
**Trần Thúc Bảo** (, 553–604, trị vì 582–589), thường được biết đến trong sử sách là **Trần Hậu Chúa** (陳後主), thụy hiệu **Trường Thành Dương công** (長城煬公), tên tự **Nguyên Tú** (元秀), tiểu tự **Hoàng
**Trần Tự Khánh** (chữ Hán: 陳嗣慶;1175 – 3 tháng 1 năm 1224), là một chính trị gia, viên tướng trứ danh thời kỳ suy vong của triều đại nhà Lý, người lãnh đạo chính thống
**Trận chung kết Giải vô địch bóng đá thế giới 2022** là trận đấu cuối cùng của Giải vô địch bóng đá thế giới 2022, lần thứ 22 của giải đấu do FIFA tổ chức
**Trần Thủ Độ** (chữ Hán: 陳守度, 1194 – 1264), cũng gọi **Trung Vũ đại vương** (忠武大王), là một nhà chính trị Đại Việt, sống vào thời cuối triều Lý đầu triều Trần trong lịch sử
**Karl V** (tiếng Tây Ban Nha: _Carlos_; tiếng Đức: _Karl_; tiếng Hà Lan: _Karel_; tiếng Ý: _Carlo_) (24 tháng 2 năm 1500 – 21 tháng 9 năm 1558) là người đã cai trị cả Đế
**Trận Agincourt** (; ) là một trận đánh tiêu biểu trong chiến tranh Trăm Năm giữa Anh với Pháp. Trận đánh diễn ra ngày 25 tháng 10 năm 1415 (Ngày Thánh Crispin) gần Azincourt, ở
Đây là các **trận đấu cờ vua giữa con người và máy tính** quan trọng. Máy tính lần đầu tiên có thể đánh bại những người chơi cờ mạnh vào cuối những năm 1980. nổi
**Hậu Trần** (chữ Nôm: 茹後陳, chữ Hán: 後陳朝, Hán Việt: _Hậu Trần triều_) là một triều đại trong lịch sử Việt Nam từ 1407 đến 1414 mà các sách sử vẫn chưa thống nhất cách
**Trần Anh Tông** (chữ Hán: 陳英宗; 25 tháng 10 năm 1276 – 21 tháng 4 năm 1320) tên khai sinh là **Trần Thuyên** (陳烇), là vị hoàng đế thứ tư của nhà Trần nước Đại
CÁCH PHÂN BIỆT J.PLUS THẬT VÀ J.PLUS GIẢCảnh báo hàng nhái, hàng giả công ty JasmineHiện nay trên thị trường ĐÃ XUẤT HIỆN HÀNG GIẢ CHAI XỊT J.PLUS, để tránh mua hàng giả quý khách
CÁCH PHÂN BIỆT J.PLUS THẬT VÀ J.PLUS GIẢCảnh báo hàng nhái, hàng giả công ty JasmineHiện nay trên thị trường ĐÃ XUẤT HIỆN HÀNG GIẢ CHAI XỊT J.PLUS, để tránh mua hàng giả quý khách
**Trần Nghệ Tông** (chữ Hán: 陳藝宗) (20 tháng 12 năm 1321 – 6 tháng 1 năm 1395), tên húy là **Cung Định Vương Trần Phủ** (陳暊) hoặc **Trần Thúc Minh** (陳叔明), xưng hiệu **Nghệ Hoàng**
**Trận Nhai Đình** (chữ Hán: 街亭之戰, _Nhai Đình chi chiến_) là một trận chiến giữa hai nước Tào Ngụy và Thục Hán diễn ra vào năm 228. Đây là một phần trong Chiến tranh Thục-Ngụy
**Trần Lệ Xuân** (22 tháng 8 năm 1924 – 24 tháng 4 năm 2011), còn được gọi tắt theo tên chồng là **bà Nhu** (), là một gương mặt then chốt trong chính quyền Ngô
**Trần Liễu** (chữ Hán: 陳柳; 1210 - 1251), hay **An Sinh vương** (安生王) hoặc **Khâm Minh Đại vương** (欽明大王), một tông thất vương công thuộc hoàng tộc nhà Trần trong lịch sử Việt Nam. Ông
**Trận Waterloo** (phiên âm tiếng Việt: **Oa-téc-lô**) là trận chiến diễn ra vào ngày Chủ nhật 18 tháng 6 năm 1815, gần Waterloo, thuộc Bỉ. Quân Pháp dưới sự chỉ huy của Hoàng đế Napoleon
**Trận rừng Teutoburg** (tiếng Đức: _Schlacht im Wald Teutoburger_, _Hermannsschlacht_ hoặc _Varusschlacht_), còn gọi là **Trận Kalkriese**, được nhân dân Đức về sau coi là vị anh hùng dân tộc vĩ đại của mình. Thất
**Trận Vukovar** là một cuộc vây hãm kéo dài 87 ngày từ tháng 8 đến tháng 11 năm 1991 ở thành phố Vukovar, miền đông Croatia, áp đặt bởi Quân đội nhân dân Nam Tư
**Trận Stalingrad** (23 tháng 8 năm 19422 tháng 2 năm 1943) là một trận đánh lớn diễn ra trong Chiến tranh Xô-Đức giữa Đức Quốc xã cùng với các nước thuộc địa và Hồng quân
Bộ binh Auxilia đang vượt sông, có lẽ là [[sông Donau|sông Danube, bằng cầu phao trong Cuộc chiến Chinh phục Dacia của Hoàng đế Trajan (101 - 106 CN). Có thể nhận ra họ từ
**Mặt trận Srem** (, ) là tuyến phòng thủ vững chắc của Wehrmacht và Quân lực Croatia nằm tại Srem và Đông Slavonia trong Thế chiến thứ hai từ 23 tháng 10 năm 1944 đến
**Trần** () là một họ người Trung Quốc, Đài Loan, Hồng Kông, Việt Nam, Hàn Quốc, Singapore và một số nơi khác trên thế giới. Họ Trần là họ phổ biến nhất tại miền Nam
**Trận Trường Bản** là trận đánh diễn ra năm 208 thời Tam Quốc trong lịch sử Trung Quốc, giữa hai thế lực quân phiệt Lưu Bị và Tào Tháo. Trận đánh cũng được đề cập
**Trận Hàm Đan** (chữ Hán: 邯鄲之戰, Hán Việt: _Hàm Đan chi chiến_) là cuộc chiến tranh diễn ra vào thời Chiến Quốc do nước Tần phát động tiến công vào kinh đô Hàm Đan của
**Trận Phì Thủy** (Phì Thủy chi chiến: 淝水之戰) là trận đánh nổi tiếng năm 383 thời Đông Tấn - Ngũ Hồ thập lục quốc trong lịch sử Trung Quốc giữa quân Tiền Tần và quân
Trong quá trình xâm lược Việt Nam nửa cuối thế kỷ 19, quân Pháp đánh chiếm thành Vĩnh Long cả thảy hai lần. Trận đầu diễn ra từ ngày 20 cho đến ngày 23 tháng
**Trần Sở Hà** (; sinh ngày 9 tháng 5 năm 1978) là một diễn viên và người mẫu Đài Loan. ## Tiểu sử Sở Hà là con trai cả của Trần Khải Lễ , không
Nhiều **các kiểu trận đấu vật chuyên nghiệp**, đôi khi được gọi là "khái niệm" hoặc "trận đấu dùng mánh lới", trong thuật ngữ của doanh nghiệp, được thể hiện trong môn đấu vật chuyên
Biết Mình Biết Người, Trăm Trận Trăm Thắng Trong binh phápTôn Tử, có viết Biết người biết ta, trăm trận không nguy không biết người mà chỉ biết ta, một trận thắng một trận thua
**Trần Tuyên Đế** (chữ Hán: 陳宣帝, 530–582), tên húy là **Trần Húc** (), hay **Trần Đàm Húc** (陳曇頊), tên tự **Thiệu Thế** (紹世), tiểu tự **Sư Lợi** (師利), là một hoàng đế của triều Trần
:''Về các trận chiến khác đã diễn ra tại Moskva, xem bài định hướng Trận Moskva **Trận Borodino** (, _Borodinskoe srazhenie_; phiên âm: **Bô-rô-đi-nô**); hoặc còn gọi là **Trận Sông Moskva** () giữa quân đội
Trong lý thuyết mã hóa, **mã tuyến tính** là mã sửa lỗi trong đó mọi tổ hợp tuyến tính của các mã tự cũng là một mã tự. Mã tuyến tính thường được phân loại