Tajanアルゴリズム実装中
1 parent f50c7e5 commit 0e90cd44173eba48db8481cc2516603ceb36436b
yoichiro authored on 5 Feb 2020
Showing 1 changed file
View
55
AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java
import models.*;
import models.dataFlowModel.DataFlowModel;
 
public class UpdateConflictCheck {
private Map<Node, Boolean> unvisit = new HashMap<>();
private List<Node> list = new LinkedList<>();
private int index = 0;
private Deque<Node> stack = new ArrayDeque<>();
private Set<Set<Node>> strong = new HashSet<>();
private Map<Integer, Node> ids = new HashMap<>();
private Map<Node, Integer> lowlink = new HashMap<>();
private Map<Node, Boolean> onStack = new HashMap<>();
 
private void visit(Node node) {
if (unvisit.get(node)) {
for (Node n : node.getSuccessors()) {
visit(n);
list.add(node);
private void strongconnect(Node node) {
ids.put(index, node);
lowlink.put(node, index);
index++;
stack.push(node);
onStack.put(node, true);
 
for (Node n : node.getSuccessors()) {
if (lowlink.containsKey(n)) {
strongconnect(n);
if (lowlink.get(node) > lowlink.get(n)) {
lowlink.replace(node, lowlink.get(node), lowlink.get(n));
}
} else if (onStack.get(n)) {
if (lowlink.get(node) > lowlink.get(n)) {
lowlink.replace(node, lowlink.get(node), lowlink.get(n));
}
}
}
}
 
private void assign(Node u1, Node u2) {
}
 
public boolean run(DataFlowModel model) {
for (Node node : model.getResourceDependencyGraph().getNodes()) {
if (ids.get(index) == null) {
strongconnect(node);
}
}
return false;
}
}