From f7a0f294c81301cdd6bdbebef60663bfead691ba Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 13 Jun 2023 12:10:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=9B=BE=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/g2d/dp/distribution_pattern.go | 15 ++++++++------- utils/g2d/dp/distribution_pattern_test.go | 8 ++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/utils/g2d/dp/distribution_pattern.go b/utils/g2d/dp/distribution_pattern.go index c080504..a1acb2d 100644 --- a/utils/g2d/dp/distribution_pattern.go +++ b/utils/g2d/dp/distribution_pattern.go @@ -2,7 +2,6 @@ package dp import ( "github.com/kercylan98/minotaur/utils/g2d" - "github.com/kercylan98/minotaur/utils/hash" ) // NewDistributionPattern 构建一个分布图实例 @@ -55,12 +54,13 @@ func (slf *DistributionPattern[Item]) Refresh(pos int) { slf.buildRelationships(pos, slf.matrix[pos]) return } - temp := hash.Copy(links) + var positions []int for tp := range links { + positions = append(positions, tp) delete(slf.links, tp) } - for tp, target := range temp { - slf.buildRelationships(tp, target) + for _, tp := range positions { + slf.buildRelationships(tp, slf.matrix[tp]) } } @@ -78,12 +78,13 @@ func (slf *DistributionPattern[Item]) RefreshWithItem(pos int, item Item) { slf.buildRelationships(pos, slf.matrix[pos]) return } - temp := hash.Copy(links) + var positions []int for tp := range links { + positions = append(positions, tp) delete(slf.links, tp) } - for tp, target := range temp { - slf.buildRelationships(tp, target) + for _, tp := range positions { + slf.buildRelationships(tp, slf.matrix[tp]) } } diff --git a/utils/g2d/dp/distribution_pattern_test.go b/utils/g2d/dp/distribution_pattern_test.go index 7a5851b..057739f 100644 --- a/utils/g2d/dp/distribution_pattern_test.go +++ b/utils/g2d/dp/distribution_pattern_test.go @@ -17,4 +17,12 @@ func TestNewDistributionPattern(t *testing.T) { for pos, link := range dp.links { fmt.Println(pos, link, fmt.Sprintf("%p", link)) } + + fmt.Println() + + matrix[6] = 2 + dp.Refresh(6) + for pos, link := range dp.links { + fmt.Println(pos, link, fmt.Sprintf("%p", link)) + } }