Tôi đang làm việc trên một dự án mà tôi cần lưu trữ ma trận các số được lập chỉ mục bằng hai khóa chuỗi. Ma trận không bị răng cưa, tức là nếu một khóa cột tồn tại cho bất kỳ hàng nào thì nó sẽ tồn tại cho tất cả các hàng. Tương tự, nếu một khóa hàng tồn tại cho bất kỳ cột nào thì nó sẽ tồn tại cho tất cả các cột.Ma trận kết hợp?
Cách rõ ràng để diễn tả điều này là với một mảng kết hợp của mảng kết hợp, nhưng điều này là cả hai vụng về và không hiệu quả, và nó không thực thi tài sản không phải lởm chởm. Có bất kỳ ngôn ngữ lập trình phổ biến nào cung cấp ma trận kết hợp được tích hợp vào ngôn ngữ hoặc như một phần của thư viện chuẩn của chúng không? Nếu vậy, làm thế nào để họ làm việc, cả ở cấp API và triển khai? Tôi đang sử dụng Python và D cho dự án này, nhưng các ví dụ bằng các ngôn ngữ khác vẫn hữu ích vì tôi có thể xem API và tìm ra cách tốt nhất để triển khai một cái gì đó tương tự trong Python hoặc D.
Vâng, tôi thực sự không biết rõ về Python. Tôi đã không nhận thức được bạn có thể làm điều này, mặc dù nó có ý nghĩa trong hindsight cho rằng bạn về cơ bản sử dụng tuples như là một chìa khóa. – dsimcha
hoạt động tốt, nhưng nó sẽ sử dụng nhiều bộ nhớ hơn để lưu trữ các phím mà tôi nghĩ là một phần của những gì bạn không muốn. Tuy nhiên, nó sẽ nhanh hơn một chút so với phương pháp mà tôi đề xuất mà sẽ yêu cầu bảng băm tra cứu để tìm các chỉ số ma trận trước khi truy cập ma trận. Tốc độ hoặc không gian: đó là câu hỏi. –
@Justin: Đó là một ý tưởng hay, nhưng tôi hy vọng sẽ có câu trả lời tốt hơn. Lý tưởng nhất là tôi muốn một ma trận "thực", nơi tôi có thể nhận tất cả các hàng cho một cột đơn lẻ hoặc tất cả các cột cho một hàng, v.v., không chỉ là giải pháp thay thế. – dsimcha