2010-10-25 75 views
1

首先,我正在研究大約300個元素之間的交互。每個元素將與所有其他元素和自身進行交互。在少數情況下,會發生反應,我將標記該反應。創建一個數據結構來比較300個元素

因爲這基本上是與90,000可能的相互作用矩陣,我想管理與代碼這個數據,所以我可以輕鬆地測試,但是我想的相互作用,直到我把它們都進行測試。由於我顯然不會一次性完成所有這些操作,因此數據必須以某種方式存儲在磁盤上。

這是我的問題:這將是什麼理想的數據結構設計?我通常使用關係數據庫來存儲數據,而這個特殊的問題似乎與RDB沒有很好的結合。如果我不清楚,請告訴我。

回答

2

沒有錯的RDBMS這裏:最重要的事情是沒有得到數據,但事後有關的報告,以及一個不能從您的描述告訴你的需求是什麼。

至於存儲300x300的結果:你只需要記錄的反應,而不是每次測試。那,以及你在測試中獲得的矩陣有多遠。

需要注意的是90K的記錄是不是真的非常多的數據,所以你可以讓這一切,如果你想要的。

編輯:所有你需要的是一對夫婦表:

Elements 
-------- 
ItemID 
... -- whatever identifying info you need 

Crossref 
-------- 
ItemX int 
ItemY int 
Results -- whatever data you need 

對於它的價值:如果元組{ItemX,ItemY}相當於{ItemY,ItemX},那麼你不這樣做300x300的比較,你正在做的(300 + 299 + 298 + ... + 1)= 45150.

+0

好了,你可以測試針對自身的元素,所以我能想到的唯一途徑跟蹤這是使用300x300矩陣。然後,用矩陣結構,你無法知道什麼會與什麼反應,所以每個元素都需要在兩個軸上表示。將創建一個300x300 RDBMS表是適當的解決方案嗎? – HenryAdamsJr 2010-10-25 19:22:27

+0

哦,我想跟蹤所有測試的原因是,在每次測試期間,我可能想要採取不同的順序,所以僅僅跟蹤一個位置是不夠的。 – HenryAdamsJr 2010-10-25 19:23:32

+0

這正是我所期待的。謝謝! – HenryAdamsJr 2010-10-26 15:06:43

0

我覺得在數據結構方面,你已經回答了你的帖子你的問題。我相信,矩陣將是最簡單的方法。就存儲而言,正如egrunin所說,90k的記錄並不多。您可以將其存儲在某個數據庫或平面文件中。簡單地存儲那些已經通過你的測試了成對,即,(A1,A2),(A1,A3),...

相關問題