[Haskell-cafe] FGL: The cost and propoer way of changing the label at a node.
Jeffrey Brown
jeffbrown.the at gmail.com
Thu Aug 13 22:03:39 UTC 2015
Right, of course! Thanks again, Ivan!
On Thu, Aug 13, 2015 at 2:58 PM, Ivan Lazar Miljenovic <
ivan.miljenovic at gmail.com> wrote:
> On 14 August 2015 at 06:14, Jeffrey Brown <jeffbrown.the at gmail.com> wrote:
> > What about changing an edge's label? Again all I can think of is to
> replace
> > the edge with a new one, but that seems likely inefficient, particularly
> if
> > I wanted to handle a lot of edges as a batch.
>
> If you're doing it as a batch, then it might be worth using emap;
> otherwise, for a single edge do the same procedure: for an edge
> (u,v,l), match on `u`, adjust the `(l,v)` in the fourth field of the
> Context and put it back with &.
>
> >
> > On Thu, Aug 6, 2015 at 3:41 PM, Ivan Lazar Miljenovic
> > <ivan.miljenovic at gmail.com> wrote:
> >>
> >> The easiest way of changing the label of one node is to obtain its
> >> Context using `match`, and update the label in the Context and then
> >> put it back in the graph with (&).
> >>
> >> Ignoring log factors (which are from the graph implementations, not
> >> the FGL model) this ends up being O(|degree of node|).
> >>
> >> On 7 August 2015 at 08:29, Jeffrey Brown <jeffbrown.the at gmail.com>
> wrote:
> >> > Is changing the label at a node O(N)?
> >> >
> >> > The only way I can think of to do it is with a map, like the following
> >> > --
> >> > which works, but seems like its speed must be linear in the number of
> >> > nodes
> >> > of the graph:
> >> >
> >> >> :m Data.Graph.Inductive.Example Data.Graph.Inductive.Graph
> >> >> let f c@(adjIn, node, lab, adjOut) = case node of {1 -> (adjIn,
> node,
> >> >> 'b',
> >> >> adjOut); _ -> c}
> >> >> loop
> >> > mkGraph [(1,'a')] [(1,1,())]
> >> >> gmap f loop
> >> > mkGraph [(1,'b')] [(1,1,())]
> >> >>
> >> >
> >> > Is that in fact the right way? Am I somehow missing the point of FGL
> if
> >> > I
> >> > have to do a lot of that?
> >> >
> >> > _______________________________________________
> >> > Haskell-Cafe mailing list
> >> > Haskell-Cafe at haskell.org
> >> > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> >> >
> >>
> >>
> >>
> >> --
> >> Ivan Lazar Miljenovic
> >> Ivan.Miljenovic at gmail.com
> >> http://IvanMiljenovic.wordpress.com
> >
> >
>
>
>
> --
> Ivan Lazar Miljenovic
> Ivan.Miljenovic at gmail.com
> http://IvanMiljenovic.wordpress.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150813/fddf32d8/attachment.html>
More information about the Haskell-Cafe
mailing list