Return-Path: X-Original-To: apmail-giraph-user-archive@www.apache.org Delivered-To: apmail-giraph-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5E080102F3 for ; Tue, 13 Aug 2013 21:51:35 +0000 (UTC) Received: (qmail 4154 invoked by uid 500); 13 Aug 2013 21:51:35 -0000 Delivered-To: apmail-giraph-user-archive@giraph.apache.org Received: (qmail 4091 invoked by uid 500); 13 Aug 2013 21:51:35 -0000 Mailing-List: contact user-help@giraph.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@giraph.apache.org Delivered-To: mailing list user@giraph.apache.org Received: (qmail 4083 invoked by uid 99); 13 Aug 2013 21:51:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Aug 2013 21:51:35 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of claudio.martella@gmail.com designates 209.85.220.171 as permitted sender) Received: from [209.85.220.171] (HELO mail-vc0-f171.google.com) (209.85.220.171) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Aug 2013 21:51:29 +0000 Received: by mail-vc0-f171.google.com with SMTP id ij15so4411847vcb.2 for ; Tue, 13 Aug 2013 14:51:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=ntO8rvJpopH+lqRPwOIgBSfLmEDimy4afanSPr7Rf0c=; b=mu+dtyV+IkTZYctlYndKjaXBVba/RQNR9LANwyJwD6SQHrFFWJI2tvf7/rSeclA00e WCZ+gDCcu9HQJWNUbf4s/6RKidJ6P+cIVKzdeCMb2TxG+KFOsRi5jumAXr2MxOrqVy1r WVrYrcMSebZ3WuAZc/boON9+B/qGlxSdwqYQuizoITWQz7AnK8bFGpj5U4TCaKnYxhl/ pgMdGkbDRVo9Tj1t7z1y4ugpX61g9FpMlpwwByuE2j41hxYxgCKOhZzdA7IhKGuaSo0t I/vXXDsGjwDiEU7CEUDDUFG+AOm4nem3IVs2WfL40dCueq2HXOWm7HmDBJAsr0j9mBTA MwXQ== X-Received: by 10.52.170.111 with SMTP id al15mr2039093vdc.43.1376430669059; Tue, 13 Aug 2013 14:51:09 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.177.133 with HTTP; Tue, 13 Aug 2013 14:50:48 -0700 (PDT) In-Reply-To: References: From: Claudio Martella Date: Tue, 13 Aug 2013 23:50:48 +0200 Message-ID: Subject: Re: Problems with sending/receiving messages of type IntArrayListWritable To: "user@giraph.apache.org" Content-Type: multipart/alternative; boundary=047d7b86f11e165b1c04e3db3d13 X-Virus-Checked: Checked by ClamAV on apache.org --047d7b86f11e165b1c04e3db3d13 Content-Type: text/plain; charset=ISO-8859-1 could you try using: -D giraph.oneToAllMsgSending=true when you run it? On Tue, Aug 13, 2013 at 11:41 PM, Kyle Orlando wrote: > Yep, and I've pulled recently as well. > > > On Tue, Aug 13, 2013 at 3:10 PM, Claudio Martella < > claudio.martella@gmail.com> wrote: > >> That's strange. This looks like a bug to me. Are you using trunk? >> >> >> On Mon, Aug 12, 2013 at 4:32 PM, Kyle Orlando wrote: >> >>> Also, I realize that I just sent an uncommented version... sorry guys, >>> but the algorithm consists of just three supersteps: >>> >>> >>> Superstep 0.) Source sends list of source's neighbors to each neighbor >>> >>> Superstep 1.) Neighbor receives list of source's neighbors from >>> source, counts number of mutual neighbors, sends this value (in a >>> 1-element list) back to source >>> >>> Superstep 2.) Source receives messages from neighbors that contain >>> number of mutual neighbors. These are summed up and divided by the >>> number of possible connections between neighbors to get the local >>> clustering coefficient (between 0 and 1). This is set as the source >>> vertex's value. >>> >>> On Mon, Aug 12, 2013 at 7:28 AM, Kyle Orlando >>> wrote: >>> > Alrighty, here's my code: >>> > >>> > public void compute( >>> > Vertex>> NullWritable> vertex, >>> > Iterable messages) throws >>> IOException { >>> > >>> > if (isSource(vertex)) { >>> > if (getSuperstep() == 0) { >>> > System.out.println("\nSUPERSTEP >>> 0\n------------------------------"); >>> > IntArrayListWritable sourceNeighbors >>> = new IntArrayListWritable(); >>> > >>> > vertex.setValue(new >>> DoubleWritable(0)); >>> > >>> > for (Edge >>> edge : vertex.getEdges()) { >>> > IntWritable targetVertex = >>> new >>> > IntWritable(edge.getTargetVertexId().get()); >>> > >>> sourceNeighbors.add(targetVertex); >>> > } >>> > >>> > for (IntWritable neighbor : >>> sourceNeighbors) { >>> > sendMessage(neighbor, >>> sourceNeighbors); >>> > System.out.println("Vertex " >>> + vertex.getId() + " sends " + >>> > sourceNeighbors + " to " + neighbor); >>> > } >>> > >>> > } else if (getSuperstep() == 2) { >>> > int total = vertex.getNumEdges(); >>> > int possibleCombos = total * (total >>> - 1); >>> > int mutualNeighbors = 0; >>> > double coefficient = 0; >>> > int count = 1; >>> > >>> > System.out.println("\nSUPERSTEP >>> 2\n------------------------------"); >>> > >>> > for (IntArrayListWritable message : >>> messages) { >>> > System.out.println("Message >>> " + count + " contains: " + message); >>> > mutualNeighbors += >>> message.get(0).get(); >>> > count++; >>> > } >>> > >>> > if (possibleCombos > 0) { >>> > coefficient = >>> (double)mutualNeighbors / possibleCombos; >>> > vertex.setValue(new >>> DoubleWritable(coefficient)); >>> > } >>> > >>> > } >>> > } else { >>> > vertex.setValue(new DoubleWritable(0)); >>> > >>> > if (getSuperstep() == 1) { >>> > int mutualNeighbors = 0; >>> > >>> > System.out.println("\nSUPERSTEP >>> 1\n------------------------------"); >>> > IntArrayListWritable sourceNeighbors >>> = messages.iterator().next(); >>> > System.out.println("Vertex " + >>> vertex.getId() + " receives " + >>> > sourceNeighbors); >>> > >>> > for (Edge >>> edge : vertex.getEdges()) { >>> > IntWritable targetVertex = >>> new >>> > IntWritable(edge.getTargetVertexId().get()); >>> > if >>> (sourceNeighbors.contains(targetVertex)) mutualNeighbors++; >>> > } >>> > >>> > IntArrayListWritable neighborCount = >>> new IntArrayListWritable(); >>> > neighborCount.add(new >>> IntWritable(mutualNeighbors)); >>> > >>> > sendMessage(new >>> IntWritable(SOURCE_ID.get(getConf())), neighborCount); >>> > System.out.println("Vertex " + >>> vertex.getId() + " sends " + >>> > neighborCount + " to Vertex " + SOURCE_ID.get(getConf())); >>> > >>> > } >>> > } >>> > >>> > vertex.voteToHalt(); >>> > } >>> > >>> > >>> > On Fri, Aug 9, 2013 at 10:15 PM, Claudio Martella >>> > wrote: >>> >> you'd have to show us the code in the compute method. your problem >>> might be >>> >> caused by object reusal. >>> >> >>> >> >>> >> On Fri, Aug 9, 2013 at 9:05 PM, Kyle Orlando < >>> kyle.r.orlando@gmail.com> >>> >> wrote: >>> >>> >>> >>> Hello, >>> >>> >>> >>> I am trying to write code to compute the local clustering coefficient >>> >>> of a vertex/some vertices, and to do this I send a message that >>> >>> contains a list of the source's neighbors to each of its neighbors. >>> >>> This is in, of course, an IntArrayListWritable. I check the list >>> that >>> >>> I am sending before invoking sendMessage(), and it appears to be >>> >>> correct. However, when I use message.iterator.next() or something >>> >>> similar, the IntArrayListWritable objects seem to repeat or >>> something. >>> >>> I did some logging, and here was the output: >>> >>> >>> >>> SUPERSTEP 0 >>> >>> ------------------------------ >>> >>> Vertex 1 sends [2, 3, 4] to Vertex 2 >>> >>> Vertex 1 sends [2, 3, 4] to Vertex 3 >>> >>> Vertex 1 sends [2, 3, 4] to Vertex 4 >>> >>> >>> >>> SUPERSTEP 1 >>> >>> ------------------------------ >>> >>> Vertex 2 receives [2, 3, 4] >>> >>> Vertex 2 sends [1] to Vertex 1 >>> >>> >>> >>> SUPERSTEP 1 >>> >>> ------------------------------ >>> >>> Vertex 3 receives [2, 3, 4, 2, 3, 4] >>> >>> Vertex 3 sends [1] to Vertex 1 >>> >>> >>> >>> SUPERSTEP 1 >>> >>> ------------------------------ >>> >>> Vertex 4 receives [2, 3, 4, 2, 3, 4, 2, 3, 4] >>> >>> Vertex 4 sends [0] to Vertex 1 >>> >>> >>> >>> SUPERSTEP 2 >>> >>> ------------------------------ >>> >>> Message 1 contains: [1] >>> >>> Message 2 contains: [1, 1, 1] >>> >>> Message 3 contains: [1, 1, 1, 1, 1, 0] >>> >>> >>> >>> What is happening? >>> >>> >>> >>> -- >>> >>> Kyle Orlando >>> >>> Computer Engineering Major >>> >>> University of Maryland >>> >> >>> >> >>> >> >>> >> >>> >> -- >>> >> Claudio Martella >>> >> claudio.martella@gmail.com >>> > >>> > >>> > >>> > -- >>> > Kyle Orlando >>> > Computer Engineering Major >>> > University of Maryland >>> >>> >>> >>> -- >>> Kyle Orlando >>> Computer Engineering Major >>> University of Maryland >>> >> >> >> >> -- >> Claudio Martella >> claudio.martella@gmail.com >> > > > > -- > Kyle Orlando > Computer Engineering Major > University of Maryland > -- Claudio Martella claudio.martella@gmail.com --047d7b86f11e165b1c04e3db3d13 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
could you try using:

-D giraph.oneToAllMsgSending=3Dtrue when = you run it?


O= n Tue, Aug 13, 2013 at 11:41 PM, Kyle Orlando <kyle.r.orlando@gmail= .com> wrote:
Yep, and I've pulled re= cently as well.


On Tue, Aug 13, 2013 at 3:10 PM, Claudio= Martella <claudio.martella@gmail.com> wrote:
That's strange. This lo= oks like a bug to me. Are you using trunk?
=


On Mon, Aug 12, 2013 at 4:32 PM, Ky= le Orlando <kyle.r.orlando@gmail.com> wrote:
Also, I realize that I just sent an uncommen= ted version... sorry guys,
but the algorithm consists of just three supersteps:


Superstep 0.) Source sends list of source's neighbors to each neighbor<= br>
Superstep 1.) Neighbor receives list of source's neighbors from
source, counts number of mutual neighbors, sends this value (in a
1-element list) back to source

Superstep 2.) Source receives messages from neighbors that contain
number of mutual neighbors. These are summed up and divided by the
number of possible connections between neighbors to get the local
clustering coefficient (between 0 and 1). This is set as the source
vertex's value.

On Mon, Aug 12, 2013 at 7:28 AM, Kyle Orlando <kyle.r.orlando@gmail.com> wrote= :
> Alrighty, here's my code:
>
> =A0 =A0 =A0 =A0 =A0 public void compute(
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Vertex<IntWritable, Dou= bleWritable, NullWritable> vertex,
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Iterable<IntArrayListWr= itable> messages) throws IOException {
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (isSource(vertex)) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (getSuperstep()= =3D=3D 0) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Sy= stem.out.println("\nSUPERSTEP 0\n------------------------------")= ;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 In= tArrayListWritable sourceNeighbors =3D new IntArrayListWritable();
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ve= rtex.setValue(new DoubleWritable(0));
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fo= r (Edge<IntWritable, NullWritable> edge : vertex.getEdges()) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 IntWritable targetVertex =3D new
> IntWritable(edge.getTargetVertexId().get());
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 sourceNeighbors.add(targetVertex);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }<= br> >
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fo= r (IntWritable neighbor : sourceNeighbors) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 sendMessage(neighbor, sourceNeighbors);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 System.out.println("Vertex " + vertex.getId() + &= quot; sends " +
> sourceNeighbors + " to " + neighbor);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }<= br> >
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } else if (getSupe= rstep() =3D=3D 2) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 in= t total =3D vertex.getNumEdges();
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 in= t possibleCombos =3D total * (total - 1);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 in= t mutualNeighbors =3D 0;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 do= uble coefficient =3D 0;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 in= t count =3D 1;
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Sy= stem.out.println("\nSUPERSTEP 2\n------------------------------")= ;
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fo= r (IntArrayListWritable message : messages) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 System.out.println("Message " + count + " co= ntains: " + message);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 mutualNeighbors +=3D message.get(0).get();
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 count++;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }<= br> >
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if= (possibleCombos > 0) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 coefficient =3D (double)mutualNeighbors / possibleCombos; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 vertex.setValue(new DoubleWritable(coefficient));
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }<= br> >
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } else {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 vertex.setValue(ne= w DoubleWritable(0));
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (getSuperstep()= =3D=3D 1) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 in= t mutualNeighbors =3D 0;
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Sy= stem.out.println("\nSUPERSTEP 1\n------------------------------")= ;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 In= tArrayListWritable sourceNeighbors =3D messages.iterator().next();
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Sy= stem.out.println("Vertex " + vertex.getId() + " receives &qu= ot; +
> sourceNeighbors);
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fo= r (Edge<IntWritable, NullWritable> edge : vertex.getEdges()) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 IntWritable targetVertex =3D new
> IntWritable(edge.getTargetVertexId().get());
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 if (sourceNeighbors.contains(targetVertex)) mutualNeighbors= ++;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }<= br> >
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 In= tArrayListWritable neighborCount =3D new IntArrayListWritable();
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ne= ighborCount.add(new IntWritable(mutualNeighbors));
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 se= ndMessage(new IntWritable(SOURCE_ID.get(getConf())), neighborCount);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Sy= stem.out.println("Vertex " + vertex.getId() + " sends "= +
> neighborCount + " to Vertex " + SOURCE_ID.get(getConf())); >
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 vertex.voteToHalt();
> =A0 =A0 =A0 =A0 =A0 }
>
>
> On Fri, Aug 9, 2013 at 10:15 PM, Claudio Martella
> <cl= audio.martella@gmail.com> wrote:
>> you'd have to show us the code in the compute method. your pro= blem might be
>> caused by object reusal.
>>
>>
>> On Fri, Aug 9, 2013 at 9:05 PM, Kyle Orlando <kyle.r.orlando@gmail.com&g= t;
>> wrote:
>>>
>>> Hello,
>>>
>>> I am trying to write code to compute the local clustering coef= ficient
>>> of a vertex/some vertices, and to do this I send a message tha= t
>>> contains a list of the source's neighbors to each of its n= eighbors.
>>> This is in, of course, an IntArrayListWritable. =A0I check the= list that
>>> I am sending before invoking sendMessage(), and it appears to = be
>>> correct. However, when I use message.iterator.next() or someth= ing
>>> similar, the IntArrayListWritable objects seem to repeat or so= mething.
>>> I did some logging, and here was the output:
>>>
>>> SUPERSTEP 0
>>> ------------------------------
>>> Vertex 1 sends [2, 3, 4] to Vertex 2
>>> Vertex 1 sends [2, 3, 4] to Vertex 3
>>> Vertex 1 sends [2, 3, 4] to Vertex 4
>>>
>>> SUPERSTEP 1
>>> ------------------------------
>>> Vertex 2 receives [2, 3, 4]
>>> Vertex 2 sends [1] to Vertex 1
>>>
>>> SUPERSTEP 1
>>> ------------------------------
>>> Vertex 3 receives [2, 3, 4, 2, 3, 4]
>>> Vertex 3 sends [1] to Vertex 1
>>>
>>> SUPERSTEP 1
>>> ------------------------------
>>> Vertex 4 receives [2, 3, 4, 2, 3, 4, 2, 3, 4]
>>> Vertex 4 sends [0] to Vertex 1
>>>
>>> SUPERSTEP 2
>>> ------------------------------
>>> Message 1 contains: [1]
>>> Message 2 contains: [1, 1, 1]
>>> Message 3 contains: [1, 1, 1, 1, 1, 0]
>>>
>>> What is happening?
>>>
>>> --
>>> Kyle Orlando
>>> Computer Engineering Major
>>> University of Maryland
>>
>>
>>
>>
>> --
>> =A0 =A0Claudio Martella
>> =A0 =A0claudio.martella@gmail.com
>
>
>
> --
> Kyle Orlando
> Computer Engineering Major
> University of Maryland



--
Kyle Orlando
Computer Engineering Major
University of Maryland



<= /div>--
=A0 =A0Claudio Martella
=A0 = =A0claudio.= martella@gmail.com=A0 =A0



--
Kyle Orlando
Compute= r Engineering Major
University of Maryland



--
= =A0 =A0Claudio Martella
=A0 =A0claudio.martella@gmail.com=A0 =A0
--047d7b86f11e165b1c04e3db3d13--