2014-11-09 87 views
0

我一直在努力理解以下問題。Java零矩陣內存使用情況

零矩陣必然有效的內存?零矩陣是否花費更少的內存(或者不花費任何內存)?

我試圖在java中驗證它,但事實證明內存已分配給指定的大小。

我不確定C/C++或其他語言如matlab和octave以及它們如何管理矩陣和向量內存;

我之所以問這個問題的原因是想要建立一個大尺寸的稀疏矩陣,但大多數條目都是零,事實證明java並不是一個好的選擇,因爲java中的零矩陣仍然花費很多內存。有沒有人對這個問題有過任何經驗?不知道你如何處理它,你的幫助將不勝感激。

感謝

+3

直接在任何語言中分配一個空數組將花費很多內存。不管語言如何,你應該使用專門爲稀疏數組或矩陣設計的數據結構。 – 2014-11-09 01:44:36

回答

1

直白填零矩陣將花費您在任何語言:分配的數量並不取決於你用填充它什麼數字。

看看例如提供稀疏矩陣支持的UJMP以及許多算法。可能存在其他實現。

一般來說,如果您發現某些難以實現但可能有用的內容,則可以使用Google for open-libraries庫。很多車輪已經發明瞭。

+0

非常感謝9000,請仔細看看UJMP,謝謝。 – Luke 2014-11-09 06:12:35

0

因爲你必須爲你的矩陣分配空間,它將佔用空間而不管它將容納哪些數字。 (即使爲空)。

但是我可以想象有人在某處設計了一個數據結構來處理這個問題。

我腦海裏首先想到的是,你可以創建一個數據結構,它保存與其相應的值的位置。如果您要求在給定位置上不存在的值,則可以返回0.當然,這對於只有幾個零的小矩陣或矩陣來說效率不高。只是一個想法。