Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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