From 6b33e451ddf1fdf5a6e908fa0030b74d446e074a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Pitois?= <francois.pitois@univ-lyon1.fr> Date: Wed, 12 Jun 2024 09:40:52 +0200 Subject: [PATCH] SORTING speed-up --- run.sh | 3 +- src/part2/GraphCompress/.idea/misc.xml | 1 - src/part2/GraphCompress/.idea/vcs.xml | 1 - .../GraphCompress/CompressMath.class | Bin 1623 -> 1876 bytes .../out/production/GraphCompress/Greedy.class | Bin 0 -> 3657 bytes .../out/production/GraphCompress/Main.class | Bin 3006 -> 5289 bytes .../out/production/GraphCompress/Pic.class | Bin 0 -> 635 bytes .../production/GraphCompress/Score$1.class | Bin 0 -> 764 bytes .../out/production/GraphCompress/Score.class | Bin 0 -> 1336 bytes src/part2/GraphCompress/src/CompressMath.java | 7 ++ src/part2/GraphCompress/src/Greedy.java | 88 ++++++++++++++ src/part2/GraphCompress/src/Main.java | 112 ++++++++++++++++-- src/part2/GraphCompress/src/Pic.java | 21 ++++ src/part2/GraphCompress/src/Score.java | 27 +++++ 14 files changed, 250 insertions(+), 10 deletions(-) create mode 100644 src/part2/GraphCompress/out/production/GraphCompress/Greedy.class create mode 100644 src/part2/GraphCompress/out/production/GraphCompress/Pic.class create mode 100644 src/part2/GraphCompress/out/production/GraphCompress/Score$1.class create mode 100644 src/part2/GraphCompress/out/production/GraphCompress/Score.class create mode 100644 src/part2/GraphCompress/src/Greedy.java create mode 100644 src/part2/GraphCompress/src/Pic.java create mode 100644 src/part2/GraphCompress/src/Score.java diff --git a/run.sh b/run.sh index 35ab6c2..41cff02 100755 --- a/run.sh +++ b/run.sh @@ -1,7 +1,8 @@ #!/bin/bash +date "+%T" cp $1 build/graph.graph python3 src/part1/unified.py java -classpath src/part2/GraphCompress/out/production/GraphCompress Main python3 src/part3/encode.py -# python3 src/part4/draw.py +date "+%T" diff --git a/src/part2/GraphCompress/.idea/misc.xml b/src/part2/GraphCompress/.idea/misc.xml index e0844bc..0a44d59 100644 --- a/src/part2/GraphCompress/.idea/misc.xml +++ b/src/part2/GraphCompress/.idea/misc.xml @@ -1,4 +1,3 @@ -<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/out" /> diff --git a/src/part2/GraphCompress/.idea/vcs.xml b/src/part2/GraphCompress/.idea/vcs.xml index f1f0a09..710fa8b 100644 --- a/src/part2/GraphCompress/.idea/vcs.xml +++ b/src/part2/GraphCompress/.idea/vcs.xml @@ -3,6 +3,5 @@ <component name="VcsDirectoryMappings"> <mapping directory="$PROJECT_DIR$/../../../../.." vcs="Git" /> <mapping directory="$PROJECT_DIR$/../../../../../" vcs="Git" /> - <mapping directory="$PROJECT_DIR$/../../.." vcs="Git" /> </component> </project> \ No newline at end of file diff --git a/src/part2/GraphCompress/out/production/GraphCompress/CompressMath.class b/src/part2/GraphCompress/out/production/GraphCompress/CompressMath.class index 3d105f92d4750af7187f08f6bac09f5d28e90515..ab261a4e89d6cb07bf916b86bf9fa4bddde8312b 100644 GIT binary patch delta 972 zcmYjP%T7~K6kVt1KHAH*p!7vsutlH`E6^gyqx7K`0Rho6F*;Bi6B|RKQl>I-=D@`J z2Tq(gAtuH+z=<QrM!!Mh2QU)Xxwj&xx%;ehy7pds@3Vi{--1hD|9m<Ca0y!$PN8n$ zGOj3dH2@n8g_evO32Irqx~9ysGAkBVaoxn4iS_;ZmT2_df7b3i+J4w+x0<^Tn!DQq zf$W{N&30=cw;~{)v|9qYdloQxT5Iog1PqTNAa+bFIF1-E_TjXN4I4KQv$2U`8$tBi zxT#QDnXHFKOx&_jMAP{tmhzOK7Hu}SLYmEb0D-u2CJGQUFzp#<!xzc)^UmN2&=I1w zyEu%9%Z?)Ea$ovZMZfdiH`P$A3Vq@j;4e-;8|RTA@=+s)B#}fEDGU;6WY1xUNUb@X zB@#$E8!~CK2sidqSvZkL>_i?3oa<(t#)!-PB1=`3vqd#f%b<$NC`C=M-qEg78e_=N z!(e7AhGgaJmm6bR8=X}#f?Xej_kPCzUw?=ht8S(ENeDlkbKOR~)^4*AzqQO`MZe2` zfaT)?myvf1lxVOiy-d<X9R(td53zs?L<S>Gx=H!T9>O?1EWTe96GT0zGUg<a&Ao_{ zoAPtLM%B-HV((x3LG~0`YE9sxTdbtgG!-Nt*o&)E%ZqEUAzoaQ`wVBDBS7C*%+cUJ zCd>Kt!a+sOXkl&e4WfmxR+`rn1NsN_+$+D(#M`5viFbRXN~rEd`0~Ia-7CaZ3Rc*| z`tfT-*wb0QxMGcAp2dUQ5tNxUCxE9gd`GNYH?b(xCxAnal%Ijz0VQRaE^1jJ7#|_u UBdP84DBKLZxmC8xJ0EI)0lyMo`Tzg` delta 718 zcmYk4O>PrG5QX1N&yPKH3<)L)vE!foU;>7O1d^D5;{Y)cV#x-H8*m0rG2$ALA~uKx z2VjSU#14ryI}U*Os%=PGn)2)Nt5?;p`&;e1Kl<|L(`QM0dS1wDztBJrEgV#JNskOY z&PEVy6{Ln14lRsw9p!p*HhvYAKcoJ}WnIbj)a#iRypGlNno-SbY^Y<QH$kiAFdnzm zMZzN*X~~G73K$XMY<U{b_vXlD?4(pziGGUfy2h@mc`XF)ulPkYSMIu<V`B}eS<-ba z@}<<=4!f8R8)}eqRCUw@C9nrt2H6^@1&Y)zPhB%-;Gq50^)Jk^cwvr)R>IU()K&v` zE!jS_nG40lCUYzYeuthyZ*AJCt99L=B4ZxYaGV8ig2ww~ecv=JYc&~+3YF*QucK;i zwfUT)3dJ|4M*L1*W5mm}_txld_(wYVf4~zAumd_S=N1yNxIpZwVZ@9M)CXnQwiSk| zz-j3Y6@~7he;35Xqqzz4{BDuAtNM|S=-SR2@BY~@INPvnZE7bR)}eo&4o<UE-IQJv n-3-P=H|MYqCQpFcm0%=>)|Gvf`=I2EY^3vtVb5ciT&%snHa$0f diff --git a/src/part2/GraphCompress/out/production/GraphCompress/Greedy.class b/src/part2/GraphCompress/out/production/GraphCompress/Greedy.class new file mode 100644 index 0000000000000000000000000000000000000000..c0e12c0997227f03aabeef71c85015f9fb04c587 GIT binary patch literal 3657 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 literal 0 HcmV?d00001 diff --git a/src/part2/GraphCompress/out/production/GraphCompress/Main.class b/src/part2/GraphCompress/out/production/GraphCompress/Main.class index 562dcf712292d0ff6b837971221fe8d9730c9bd0..e8c4dd8035ad746e684dd8f8cc1dd5a8078f56a3 100644 GIT binary patch literal 5289 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 literal 3006 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 diff --git a/src/part2/GraphCompress/out/production/GraphCompress/Pic.class b/src/part2/GraphCompress/out/production/GraphCompress/Pic.class new file mode 100644 index 0000000000000000000000000000000000000000..de829a4e4f34178eb380aa564201fd23ea21f35a GIT binary patch literal 635 zcmZut%SyvQ6g`u)O^m70s`dR=XtS`(E)+L{P^k}41eZx1+L1PuHWh!szi}h@!i68; zM~P?BA|eKIX6D>`&bc$6U+*6Ps@QU1V{QZ%<~1xhghdTY4wkWEVb#K#KsF9fVksbM z0#+QJsyo>d$nC0FC3`HFYPIr(KxV&l#V)U|VtL$ehq8Mfge@|KdM6567eQC)^N`FW zP1U2geyXA!0lOiS<3WsBDl^DQiD6cr+N9Z*iHgqpA&Y07em9Z_O559X*uD;K0~apV zU5vnSF{)t_Q!b`4Wnsfb5t{-gdj-aIccm4?jmk-QEu(~mlD>kw-)Y};Wv_P>B+c|@ zhvgd9_#!qR%s@e#b63#*Tr;2sdEyvPm+UaPdj2bfzwivhUwnr7NXmdmEKmSsi8&fs z6xkRjvpSGrf*tzv(ioBMbdbRS-enk5;i_v{{|UweHv{urN{*(6?x104DD)eU(KG%Q nn}5aLzvAMLxXL+oa^8PIhJW_{4Y|K2lfO*zKNHNPbIyJPLugVQ literal 0 HcmV?d00001 diff --git a/src/part2/GraphCompress/out/production/GraphCompress/Score$1.class b/src/part2/GraphCompress/out/production/GraphCompress/Score$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5c23d4495cf0da714317d95140f8c4a38ac6734a GIT binary patch literal 764 zcmZ`$O>fgc6r7FixG_$XwB`FN&;sd)h<fTFRRxMbL`uscsP~P#N}Rgh%HHsU5K=E( zkPt{55NCcAV%9MdYK5iU_uhEk%-h{xzrX(gu!pAss<>Z+g9kny2Jq1K@yN$xAL|0u z{Wy)yfq>K5JQi^K`a}sdhH<Kn=4WG-y_4gF$jVShGC7u6Z0izq%{0yh!a<s<te?m{ zS1fD8QKU1qvD*{yBYk!*GYYgi3%FN?%>g}=Dfxbhu+D5<9~l{)9?J95<ymJqlka6W zk?ExSc05y&>0L#vUTqXlQfcPaZ}%!?fy_;ubo<3v(&%izbU)y<!AQ@uNWG5jiG$)4 z&#g5t<W(9aI*-%Ip)yl_BCvF%a`Q&#Cd3kIAvW+tz$<z}G|}R@%4-m4UY=iIt$;4g zLV?^~oq!mi&6lczGJHjci!Q7JW?e?X=xu$2_{^k&Yuqgvq=($Y1p#$5SaAZhxZCC# z*;cN-{RNdBu8;8D3#|SvKfteCz;!;6<NTu=6uRw2Z>dWatYDSOHd|v>!FA?UIF02O zqWO}(H~823?y=MQ*0;8Q!r9^a3fG$aZ}@s?;^Ah&x`o?Cyo0-pZXtHBKpZSH1~l>* G`TYS}A&rIr literal 0 HcmV?d00001 diff --git a/src/part2/GraphCompress/out/production/GraphCompress/Score.class b/src/part2/GraphCompress/out/production/GraphCompress/Score.class new file mode 100644 index 0000000000000000000000000000000000000000..4117690c26f2bebfbb7af22221150981ad2e07bc GIT binary patch literal 1336 zcmaJ=?M@Rx6g^YQZYkwMK1EPbK-&sb{6vdrY(i{O@J9*8_-iN=SXg$+?v%)z_z?ck zC?Ubb2k@bcXLdJX#l|K(bN9}<=bm$?`|J1lPXJHxDvvzw_Mitvvy{wI9^%oWjY=L? ze0JZ)l8pxfg}UddpytXjRG~n(<L#)A0;0}1Z25r_utFWQTUwyE(Tt*YpsIw_1jZWs z@>o{d+Hos2|L{l#Qu_f9dz#L!CpD1*(;Y!83yr4XudWhqtvH^eR|N)(^?IsHX-gnm z^LNNH&~QAp(LUT(!KU1HnHg&ME$ME_z%lPhGOPC-`mhsnD%n*!mMzd%ETzZ=ay+ZY zhP#R-TFz;oSjXEH7$G(?=Spw45@)G2x6*PGtt_FueA90SEw$ztN%_dqqN(G!HdLtB zl~EiPFp8N13g|1K-z)<dq}$iNuR|TkqjjbC{GD*X!owUM74R5OXd+^pT`J%ThIk** zE2}PKz1`kdEuH7JFLQ`RF+VLz0^^7BK-GM&CG|T;?=cFs^fbpZ#_@KrW#gG?xgs!o z!R>g*{((xI$82k|#p^w>!JD!gzJJg@68Kb1%_%90?YxoRj;q4i7+Fohl5wUoe-&<? z9H|cQ4=H@?yqY$XP}HRBHXW_1HeL$M{bQ(;Hh~-e$Ke(~qddQ&EHdU68D-2xMmz74 z`-HhA2n<KL5p**i#TeIdW?bU4+(*i15ar2JWXe;g=qfLqBKtL}xXN{mRUmJc|BoKB z_LFm%tP{+Z<9b}fB;Uvs=@3z5lw_jFXz60lDO^uFSGXHgclkTAUl?RyT3JzYB%&_F zfP|XEz)fb1>~wMF^QGd^j>XfQRb0HxR;F`5J7@TGof~_XB}}AP`V$E`+{R48G7~ui zdVj!re+K&-a%Ny6<-+D@W+QQPxWhfmQwzO}hFENIH^1k2fhwEbW1J&mp3lM`O4Si$ literal 0 HcmV?d00001 diff --git a/src/part2/GraphCompress/src/CompressMath.java b/src/part2/GraphCompress/src/CompressMath.java index 8ebd7a8..01e29fd 100644 --- a/src/part2/GraphCompress/src/CompressMath.java +++ b/src/part2/GraphCompress/src/CompressMath.java @@ -57,4 +57,11 @@ public class CompressMath { return term1 + term2 + term3; } + public static int arithmeticSubSum(Pic[] picList){ + int s = 0; + for (Pic pic : picList){ + s += pic.arithmeticSub(); + } + return s; + } } diff --git a/src/part2/GraphCompress/src/Greedy.java b/src/part2/GraphCompress/src/Greedy.java new file mode 100644 index 0000000..15d3e68 --- /dev/null +++ b/src/part2/GraphCompress/src/Greedy.java @@ -0,0 +1,88 @@ +import java.util.ArrayList; + +public class Greedy { + String path; + Graph graph; + ArrayList<Structure> structList; + ArrayList<Integer> bestStructList; + ArrayList<Score> score; // size of score should always be (size of structList - size of bestStructList) + + public Greedy(String path){ + this.path = path; + String graphFilename = path + "graph.graph"; + String structFilename = path + "struct.txt"; + this.graph = Graph.fromFile(graphFilename); + this.structList = Structure.listFromFile(structFilename); + this.bestStructList= new ArrayList<Integer>(); + this.score = new ArrayList<Score>(); + } + + public void updateScore(){ + int i; + int n = structList.size(); + Structure struct; + int currentDiskSpace; + + this.score.clear(); + + for (i = 0; i < n; i++) { + if (!bestStructList.contains(i)) { + struct = structList.get(i); + graph.undoInit(); + graph.addStructure(struct); + currentDiskSpace = graph.diskSpace(); + this.score.add(new Score(i, currentDiskSpace, struct)); + graph.undoAction(); + } + } + + this.score.sort(Score.C); + } + + public void addBestStructure(){ + int i = 0; + int j = this.bestStructList.size(); + int n = this.score.size(); + Structure struct; + int structIndex; + int currentDiskSpace; + int bestCompression = graph.diskSpace(); + while (i < n) { + struct = score.get(i).getStruct(); + structIndex = score.get(i).getIndex(); + graph.undoInit(); + graph.addStructure(struct); + currentDiskSpace = graph.diskSpace(); + if (currentDiskSpace < bestCompression) { + bestCompression = currentDiskSpace; + bestStructList.add(structIndex); + graph.addStructure(struct); + System.out.println("> Selecting structure " + structIndex + " as n°" + j + ", estimate size is " + graph.diskSpace() + " bits"); + j++; + i++; + } else { + graph.undoAction(); + i = n; // break + } + } + } + + public void run(){ + String partFilename = this.path + "partition.txt"; + + System.out.println("Part 2"); + System.out.println("> Without structure, estimate size is " + graph.diskSpace() + " bits"); + + int prev_size = -1; + int new_size = 0; + while(prev_size < new_size){ + prev_size = bestStructList.size(); + System.out.println("> Updating scores..."); + this.updateScore(); + this.addBestStructure(); + new_size = bestStructList.size(); + } + + FileIO.write(graph.getPartition().toFormattedString(), partFilename); + } +} diff --git a/src/part2/GraphCompress/src/Main.java b/src/part2/GraphCompress/src/Main.java index 5fff43d..cc46eb1 100644 --- a/src/part2/GraphCompress/src/Main.java +++ b/src/part2/GraphCompress/src/Main.java @@ -1,20 +1,103 @@ -import java.io.File; -import java.sql.SQLOutput; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; public class Main { + public static void test1() { + int n = 10; + String edgeString = "0,1;0,2;0,3;1,2;1,3;2,3;2,4;2,5;3,5;4,6"; + Graph graph = new Graph(Edge.parseString(edgeString), n); + Structure s1 = new Structure("fc 0 1 2 3"); + Structure s2 = new Structure("fc 2 3 4 5"); + graph.addStructure(s1); + System.out.println(graph.toString()); + Graph copyGraph = graph.clone(); + copyGraph.undoInit(); + copyGraph.addStructure(s2); + System.out.println(graph.toString()); + System.out.println(copyGraph.toString()); + copyGraph.undoAction(); + System.out.println(graph.toString()); + System.out.println(copyGraph.toString()); + } + + public static void test2(){ + String graphName; + graphName = "as-oregon"; + graphName = "choc"; + String path; + path = "/home/pitois/Documents/these/thesis/prog/compress/"; + path = "C:/Users/Pit/Documents/Boulot/Thèse/travail/thesis/prog/compress/"; + path = "../compress/"; + String graphFilename = path + "graph/" + graphName + ".graph"; + String structFilename = path + "struct/" + graphName + ".txt"; + Graph graph = Graph.fromFile(graphFilename); + ArrayList<Structure> structList = Structure.listFromFile(structFilename); + int i, n; + Structure struct; + n = structList.size(); + for (i=0; i<n; i++){ + struct = structList.get(i); + graph.addStructure(struct); + } + + ArrayList<Edge> edgeList = Edge.readFile(graphFilename); + Graph graph2 = Graph.fromFile(graphFilename); + for (i=0; i<n; i++){ + struct = structList.get(i); + graph2.undoInit(); + graph2.addStructure(struct); + graph2.undoAction(); + graph2.addStructure(struct); + System.out.println(i + ": " + graph2.diskSpace()); + } + System.out.println(graph.check(edgeList)); + System.out.println(graph2.check(edgeList)); + + int row, column; + for (Block block: graph.getBlockMatrix()){ + row = block.getRow(); + column = block.getColumn(); + if(!graph2.getBlockMatrix().hasValue(row, column)){ + System.out.println("Missing: " + row + ", " + column); + } + } + + //System.out.println(i + ": " + graph.diskSpace()); + //System.out.println(i + ": " + graph2.diskSpace()); + //System.out.println(graph); + //System.out.println(graph.getPartition()); + //System.out.println(graph2); + //System.out.println(graph2.getPartition()); + + /* + Iterator<Block> iterator = graph.getBlockMatrix().iterator(); + Iterator<Block> iterator2 = graph2.getBlockMatrix().iterator(); + Block block; + Block block2; + + for (; iterator.hasNext() && iterator2.hasNext();) { + block = iterator.next(); + block2 = iterator2.next(); + System.out.println(block); + System.out.println(block2); + System.out.println(block.equals(block2)); + } + + */ + } + public static void greedy(){ String path; path = "build/"; + // path = "../../../build/"; String graphFilename = path + "graph.graph"; String structFilename = path + "struct.txt"; String partFilename = path + "partition.txt"; Graph graph = Graph.fromFile(graphFilename); ArrayList<Structure> structList = Structure.listFromFile(structFilename); - int i, n; + int i, k, n, m; n = structList.size(); + m = n / 10; + m = n; Structure struct; ArrayList<Integer> bestStructList= new ArrayList<Integer>(); int bestCompression = 10*graph.diskSpace(); @@ -25,6 +108,7 @@ public class Main { int j = 0; while (true) { bestStructure = -1; + k = 0; for (i = 0; i < n; i++) { if (!bestStructList.contains(i)) { struct = structList.get(i); @@ -34,6 +118,13 @@ public class Main { if (currentDiskSpace < bestCompression) { bestCompression = currentDiskSpace; bestStructure = i; + k = 0; + //System.out.println(i); + } else { + k++; + if (k > m){ + i = n; // break + } } graph.undoAction(); } @@ -41,18 +132,25 @@ public class Main { if(bestStructure >= 0){ bestStructList.add(bestStructure); graph.addStructure(structList.get(bestStructure)); - System.out.println("> Selecting structure " + bestStructure + ", estimate size is " + graph.diskSpace() + " bits"); + System.out.println("> Selecting structure " + bestStructure + " as n°" + j + ", estimate size is " + graph.diskSpace() + " bits"); + //FileIO.write(graph.getPartition().toFormattedString(), path + "partition" + j + ".txt"); j++; } else { break; } } + //System.out.println(graph.check(edgeList)); FileIO.write(graph.getPartition().toFormattedString(), partFilename); } public static void main(String[] args) { - greedy(); + /* run the old algorithm without speed-up */ + // greedy(); + + /* run the new algorithm with SORTING speed-up */ + Greedy g = new Greedy("build/"); + g.run(); } } \ No newline at end of file diff --git a/src/part2/GraphCompress/src/Pic.java b/src/part2/GraphCompress/src/Pic.java new file mode 100644 index 0000000..98de9c9 --- /dev/null +++ b/src/part2/GraphCompress/src/Pic.java @@ -0,0 +1,21 @@ +public class Pic { + private final int nbOne; + private final int nbPixel; + + public Pic(int nbOne, int nbPixel) { + this.nbOne = nbOne; + this.nbPixel = nbPixel; + } + + public int getNbOne() { + return nbOne; + } + + public int getNbPixel() { + return nbPixel; + } + + public int arithmeticSub(){ + return CompressMath.arithmeticSub(this.getNbOne(), this.getNbPixel()); + } +} diff --git a/src/part2/GraphCompress/src/Score.java b/src/part2/GraphCompress/src/Score.java new file mode 100644 index 0000000..6660d10 --- /dev/null +++ b/src/part2/GraphCompress/src/Score.java @@ -0,0 +1,27 @@ +import java.util.Comparator; + +public class Score { + private int index; + private int score; + private Structure struct; + public static final Comparator<? super Score> C = new Comparator<Score>(){ + @Override + public int compare(Score lhs, Score rhs){ + return lhs.score > rhs.score ? 1 : (lhs.score < rhs.score ? -1 : 0); + } + } ; + + public Score(int index, int score, Structure struct){ + this.index = index; + this.score = score; + this.struct = struct; + } + + public Structure getStruct(){return struct;} + public int getIndex(){return index;} + + @Override + public String toString() { + return "(" + this.index + ", " + this.score + ")"; + } +} -- GitLab