我有一個由三個數字向量組成的矩陣data=[kids,mothers,fathers]
,其中每個向量包含孩子及其母親和父親的ID。孩子的ID是唯一的,但父親和母親的身份不是唯一的(兄弟姐妹和同胞兄弟姐妹都存在)。我希望將孩子向量分成兩個大小相同的向量,跨越這些向量沒有家庭關係。我希望這些載體儘可能大,但可能會出現一些孩子需要丟棄以確保同等大小的載體。使用兩個標籤向量的向量的等分
我目前的做法是計算每個「家庭組」的大小(通過父母中的任何一個相關的孩子),然後根據每個家庭的規模建立相同大小的組。然後,我設法計算孩子們,每個母親或父親都與:
mothersKids = arrayfun(@(x)nnz(mothers==x), mothers);
mothersKids = unique([mothers,mothersKids],'rows');
fathersKids = arrayfun(@(x)nnz(fathers==x), fathers);
fathersKids = unique([fathers,fathersKids],'rows');
這告訴我有多少孩子與單親父母有關。使用家長的ID,我可以找出哪些孩子是相關的,並基於此建立組。但是,我無法弄清楚如何結合父母雙方的信息來創建'家庭團體'。作爲一個側面提示:如果小孩A通過一個父母與孩子B相關並且孩子B通過一個父母與孩子C相關,但小孩A和孩子C之間不存在關係,則爲了簡單起見如果孩子A和孩子C被安置在同一個家庭組中,我會接受。
EDIT ::
最少例如:
輸入:
data = [1,2,3,4,5,6; 11,11,12,12,13,14; 21, 22, 23, 23, 24, 25]; % = [kids,mothers,fathers]
輸出:
kidsInSameFamily = {[1,2],[3,4],[5],[6]};
groupOne = [1,2,5];
groupTwo = [3,4,6];
小例子,... – bla