Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.78 KB | None | 0 0
  1. package Traverser;
  2.  
  3. import java.io.*;
  4. import java.util.*;
  5. import java.util.HashMap;
  6. import java.util.LinkedHashSet;
  7. import java.util.LinkedList;
  8. import java.util.Map;
  9. import java.util.Set;
  10.  
  11. public class Calculate {
  12. private LinkedList<LinkedList<String>> adjloop;
  13. private LinkedList<Integer> gainloop;
  14. private LinkedList<LinkedList<String>> adjForword;
  15. private LinkedList<Integer> gainForword;
  16. private LinkedList<LinkedList<String > > nonTouch1;
  17. private LinkedList<LinkedList<String > > nonTouch2;
  18.  
  19.  
  20. public Calculate(LinkedList<LinkedList<String>> adjloop, LinkedList<Integer> gainloop,
  21. LinkedList<LinkedList<String>> adjForword, LinkedList<Integer> gainForword) {
  22. this.adjForword = adjForword;
  23. this.adjloop = adjloop;
  24. this.gainForword = gainForword;
  25. this.gainloop = gainloop;
  26. nonTouch1=new LinkedList<>();
  27. nonTouch2=new LinkedList<>();
  28. }
  29.  
  30. public int calcDelta() {
  31. LinkedList<Integer> inloop = new LinkedList<>();
  32. int res = 1 - makeSum(gainloop);
  33. for (int i = 0; i < adjloop.size() - 1; i++) {
  34. for (int j = i + 1; j < adjloop.size(); j++) {
  35. boolean flag = true;
  36. for (int j2 = 0; j2 < adjloop.get(j).size(); j2++) {
  37. if (adjloop.get(i).contains(adjloop.get(j).get(j2))) {
  38. flag = false;
  39. break;
  40. }
  41. }
  42. if (flag) {
  43. nonTouch1.add(adjloop.get(i));
  44. nonTouch2.add(adjloop.get(j));
  45. inloop.add(gainloop.get(j) * gainloop.get(i));
  46. }
  47. }
  48. res += makeSum(inloop);
  49. inloop = new LinkedList<>();
  50. }
  51.  
  52. return res;
  53. }
  54.  
  55. private LinkedList<Integer> calcDeltaForword() {
  56. LinkedList<Integer> res = new LinkedList<>();
  57. LinkedList<Integer> inloop = new LinkedList<>();
  58. for (int i = 0; i < adjForword.size(); i++) {
  59. for (int j = 0; j < adjloop.size(); j++) {
  60. boolean flag = true;
  61. for (int j2 = 0; j2 < adjloop.get(j).size(); j2++) {
  62. if (adjForword.get(i).contains(adjloop.get(j).get(j2))) {
  63. flag = false;
  64. break;
  65. }
  66. }
  67. if (flag) {
  68. inloop.add(gainloop.get(j));
  69. }
  70.  
  71. }
  72. res.add(1 - makeSum(inloop));
  73. inloop = new LinkedList<>();
  74. }
  75. return res;
  76. }
  77.  
  78. public LinkedList<LinkedList<String>> getAdjloop() {
  79. return adjloop;
  80. }
  81.  
  82. public void setAdjloop(LinkedList<LinkedList<String>> adjloop) {
  83. this.adjloop = adjloop;
  84. }
  85.  
  86. public LinkedList<Integer> getGainloop() {
  87. return gainloop;
  88. }
  89.  
  90. public void setGainloop(LinkedList<Integer> gainloop) {
  91. this.gainloop = gainloop;
  92. }
  93.  
  94. public LinkedList<LinkedList<String>> getAdjForword() {
  95. return adjForword;
  96. }
  97.  
  98. public void setAdjForword(LinkedList<LinkedList<String>> adjForword) {
  99. this.adjForword = adjForword;
  100. }
  101.  
  102. public LinkedList<Integer> getGainForword() {
  103. return gainForword;
  104. }
  105.  
  106. public void setGainForword(LinkedList<Integer> gainForword) {
  107. this.gainForword = gainForword;
  108. }
  109.  
  110. private int makeSum(LinkedList<Integer> res) {
  111. int resault = 0;
  112. for (int i = 0; i < res.size(); i++) {
  113. resault += res.get(i);
  114. }
  115. return resault;
  116.  
  117. }
  118.  
  119. private double makeMul(LinkedList<Integer> l1, LinkedList<Integer> l2) {
  120. LinkedList<Integer> res = new LinkedList<>();
  121. for (int i = 0; i < l1.size(); i++) {
  122. res.add(l1.get(i) * l2.get(i));
  123.  
  124. }
  125. return makeSum(res);
  126. }
  127.  
  128. public double getresault() {
  129. //System.out.println(calcDeltaForword());
  130. //System.out.println(gainForword);
  131. //System.out.println(calcDelta());
  132. return makeMul(calcDeltaForword(), gainForword) / calcDelta();
  133. }
  134.  
  135. public static void main(String[] args) {
  136.  
  137. Graph graph = new Graph();
  138. graph.addEdge("y1", "y2", 1);
  139. graph.addEdge("y2", "y3", 5);
  140. graph.addEdge("y2", "y6", 10);
  141. graph.addEdge("y3", "y4", 10);
  142. graph.addEdge("y4", "y3", -1);
  143. graph.addEdge("y4", "y5", 2);
  144. graph.addEdge("y5", "y2", -1);
  145. graph.addEdge("y5", "y4", -2);
  146. graph.addEdge("y5", "y5", 1);
  147. graph.addEdge("y6", "y5", 2);
  148. graph.addEdge("y6", "y6", -1);
  149.  
  150. LinkedList<String> visited = new LinkedList<>();
  151. visited.add("S");
  152. Search forward = new Search();
  153. forward.depthFirst(graph, visited);
  154. visited = new LinkedList<>();
  155. visited.add("S");
  156. DFSCycle cycle = new DFSCycle();
  157. cycle.depthFirst(graph, new LinkedList<>(), visited);
  158. cycle.deleteDublicate(cycle.getAdjloop(), cycle.getGainloop());
  159. Calculate d=new Calculate( cycle.getAdjloop(), cycle.getGainloop(), forward.getAdjForword(),
  160. forward.getGainForword());
  161. System.out.println(d.getNonTouch1()+" "+d.getNonTouch2());
  162.  
  163. }
  164.  
  165. public LinkedList<LinkedList<String>> getNonTouch1() {
  166. return nonTouch1;
  167. }
  168.  
  169. public void setNonTouch1(LinkedList<LinkedList<String>> nonTouch1) {
  170. this.nonTouch1 = nonTouch1;
  171. }
  172.  
  173. public LinkedList<LinkedList<String>> getNonTouch2() {
  174. return nonTouch2;
  175. }
  176.  
  177. public void setNonTouch2(LinkedList<LinkedList<String>> nonTouch2) {
  178. this.nonTouch2 = nonTouch2;
  179. }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement