From 0c9b1d06f87138be14a693fedcd2a491d84cf6b7 Mon Sep 17 00:00:00 2001
From: "rsmelo@inf.ufpr.br" <rsmelo@inf.ufpr.br>
Date: Tue, 7 Jun 2016 16:23:21 -0300
Subject: [PATCH] antes do artigo

---
 src/algoritmos/PrevalentSeed.java     | 32 ++++++++++++++++++++++++++-
 src/grafos/DirectedSocialNetwork.java |  2 +-
 src/readgraph/GraphReader.java        |  3 ++-
 src/simulacao/Simulacao.java          | 18 +++++++--------
 4 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/src/algoritmos/PrevalentSeed.java b/src/algoritmos/PrevalentSeed.java
index e333ef9..f882993 100644
--- a/src/algoritmos/PrevalentSeed.java
+++ b/src/algoritmos/PrevalentSeed.java
@@ -57,13 +57,43 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 		}
 		return candidatos;
 	}
+	
+	public HashSet<Actor> preSelecaoOriginal(DirectedSocialNetwork grafo) {
+		int n = grafo.vertexSet().size();
+
+		// DS <-- {}
+		HashSet<Actor> candidatos = new HashSet<>();
+
+		// compare os vertices pelo grau
+		ComparaPorGrau comp = new ComparaPorGrau(grafo);
+
+		MinMaxPriorityQueue<Actor> heapMinMax = null;
+		heapMinMax = MinMaxPriorityQueue.orderedBy(comp).maximumSize(n)
+				.create();
+		for (Actor v : grafo.vertexSet()) {
+			heapMinMax.add(v);
+		}
+
+		Set<Actor> cobertos = new HashSet<>();
+		while (!heapMinMax.isEmpty()) {
+			
+			Actor v = heapMinMax.removeLast();
+			Set<Actor> vizinhos = grafo.outNeighborsOf(v);
+
+			if (cobertos.addAll(vizinhos)) {
+				candidatos.add(v);
+			}
+			cobertos.add(v);
+		}
+		return candidatos;
+	}
 
 	@Override
 	public HashSet<Actor> escolher(int k) {
 		HashSet<Actor> semente = new HashSet<Actor>();
 		HashSet<Actor> candidatos = new HashSet<Actor>();
 
-		candidatos = preSelecao(grafo);
+		candidatos = preSelecaoOriginal(grafo);
 
 		if (candidatos.size() < k) {
 			System.out.println("Erro: o cojunto de candidatos é menor que K");
diff --git a/src/grafos/DirectedSocialNetwork.java b/src/grafos/DirectedSocialNetwork.java
index fb86913..cc80895 100644
--- a/src/grafos/DirectedSocialNetwork.java
+++ b/src/grafos/DirectedSocialNetwork.java
@@ -186,7 +186,7 @@ public class DirectedSocialNetwork extends
 	public double espectedSpread(HashSet<Actor> seed, boolean ic) {
 		double media = 0;
 		int soma = 0;
-		int repeticoes = 5000;
+		int repeticoes = 500;
 
 		if (!ic) {
 			HashSet<Actor> ativados = linearThresholdDiffusion(seed);
diff --git a/src/readgraph/GraphReader.java b/src/readgraph/GraphReader.java
index 94f5531..418afb2 100644
--- a/src/readgraph/GraphReader.java
+++ b/src/readgraph/GraphReader.java
@@ -89,7 +89,8 @@ public class GraphReader {
 		// uniform IC model
 //		 return (double)10/100;
 //		return 0.025;
-		return Math.random()/4;
+//		return Math.random()/4;
+		return 0.001;
 	}
 
 	public DirectedSocialNetwork readEpinions() {
diff --git a/src/simulacao/Simulacao.java b/src/simulacao/Simulacao.java
index f21f4db..88d2c73 100644
--- a/src/simulacao/Simulacao.java
+++ b/src/simulacao/Simulacao.java
@@ -5,7 +5,7 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashSet;
 
-import javax.media.j3d.PhysicalBody;
+//import javax.media.j3d.PhysicalBody;
 
 import org.jgrapht.graph.DefaultWeightedEdge;
 
@@ -13,7 +13,7 @@ import plot.MeuPlot;
 import readgraph.GraphReader;
 import algoritmos.ArticulationSeed;
 import algoritmos.BestNeighbors;
-import algoritmos.DominatingSeed;
+import algoritmos.PrevalentSeed;
 import algoritmos.HightDegree;
 import algoritmos.LazyGreedy;
 import algoritmos.OriginalGreedy;
@@ -38,7 +38,7 @@ public class Simulacao {
 			System.out.println("\nTestando para k = " + k);
 
 			excutionTime = System.currentTimeMillis() * -1;
-			HashSet<Actor> seed1 = new DominatingSeed(g).escolher(k);
+			HashSet<Actor> seed1 = new PrevalentSeed(g).escolher(k);
 			excutionTime += System.currentTimeMillis();
 			tempo1[i] = (excutionTime / 1000.0f);
 			sigma1[i] = g.espectedSpread(seed1, true);
@@ -105,7 +105,7 @@ public class Simulacao {
 				System.out.println("\nTestando para k = " + k);
 
 				excutionTime = System.currentTimeMillis() * -1;
-				HashSet<Actor> seed1 = new DominatingSeed(g).escolher(k);
+				HashSet<Actor> seed1 = new PrevalentSeed(g).escolher(k);
 				excutionTime += System.currentTimeMillis();
 				tempo1[i] = (excutionTime / 1000.0f);
 				sigma1[i] = g.espectedSpread(seed1, true);
@@ -125,7 +125,7 @@ public class Simulacao {
 				stempo2[i] += tempo2[i];*/
 				
 				excutionTime = System.currentTimeMillis() * -1;
-				HashSet<Actor> seed2 = new DominatingSeed(g).escolher2(k);
+				HashSet<Actor> seed2 = new PrevalentSeed(g).escolher2(k);
 				excutionTime += System.currentTimeMillis();
 				tempo2[i] = (excutionTime / 1000.0f);
 				sigma2[i] = g.espectedSpread(seed2, true);
@@ -241,10 +241,10 @@ public class Simulacao {
 		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
 		Date data = new Date();
 		System.out.println("Data de início: " + dateFormat.format(data));
-		simularArtificial();
-		 simularPhy();
-//		 simularEpinions();
-		 simularHep();
+//		simularArtificial();
+//		 simularPhy();
+		 simularEpinions();
+//		 simularHep();
 //		 simularDblp();
 	}
 
-- 
GitLab