Skip to content

In partitioning, the order at which we traverse the graph matters when identifying roots #24

@mccurdyc

Description

@mccurdyc

https://github.com/mccurdyc/splitfile/pull/16/files#diff-951ffad7d109487a48d7cefdabc00118R32-R39

// FindRoots finds the many possible roots in the graph.
// The order of the graph traversal matters because if a parent is added _after_
// a child, then that child node won't have the identified parent node.
func (g Graph) FindRoots() []*Node {
	roots := make([]*Node, 0, len(g))

	for _, node := range g {
		if len(node.Parents) == 0 {
			roots = append(roots, node)
		}
	}

	return roots
}
go run cmd/splitfile/splitfile.go github.com/mccurdyc/splitfile/testdata/src/abc
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") c 124
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") a 80
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") C 36
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") c 65
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 102
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") mb 107
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 132
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") ma 85
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") a 55
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 88
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 60
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") fabc 50
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") A 22
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") B 29
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") mc 129
roots: 11

mccurdyc-arch dev/mccurdyc/splitfile ➜ go run cmd/splitfile/splitfile.go github.com/mccurdyc/splitfile/testdata/src/abc
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") c 124
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") c 65
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") mb 107
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") a 80
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 102
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 88
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") C 36
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") mc 129
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") B 29
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") A 22
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 132
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") fabc 50
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") ma 85
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") b 60
package abc ("github.com/mccurdyc/splitfile/testdata/src/abc") a 55
roots: 9

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions