Giter Site home page Giter Site logo

Comments (2)

snowleopard avatar snowleopard commented on September 24, 2024

After #37, we have the following improvement:

g = clique [2,2,0,1,0,0,2,1,2,1,0,1,2,0,2,0,0,0,0,2,1,1,0,2,2,0,2,0,0,2,1,2,0
           ,2,0,1,1,2,0,0,0,1,2,1,0,1,1,2,2,0,2,2,2,1,0,0,1,2,0,1,0,0,2,0,2]

> size g
66

> size (removeEdge 0 1 g)
155

We also have a guarantee that the size of the resulting expression is at most 3x + 3 of the original. This is a very pessimistic worst case which only applies to strange cliques like in the above example (and also very small graphs like vertex 0 due a bunch of extra empty leaves -- this should be fixed). Here are several more realistic examples:

> p = path [1..10]
> size p
19
> size (removeEdge 5 6 p)
25

> q = path [1..100]
> size q
199
> size (removeEdge 50 51 q)
205

> r = clique [1..10]
> size r
11
> size (removeEdge 5 6 r)
24

> s = clique [1..100]
> size s
101
> size (removeEdge 50 51 s)
204

That is, if s does not have many connections (like in path) then the cost of removeEdge s is negligible. If s has a lot of connections (like in clique) then the cost of removeEdge s is around 2x. For most other graphs the cost is between 1x and 2x.

from alga.

snowleopard avatar snowleopard commented on September 24, 2024

After merging #49, the results got better, but the worst case still remains at 3x, and I don't know how to improve it -- the last example below demonstrates the problem. I believe this is a rather rare case.

> g = clique [2,2,0,1,0,0,2,1,2,1,0,1,2,0,2,0,0,0,0,2,1,1,0,2,2,0,2,0,0,2,1,2,0
           ,2,0,1,1,2,0,0,0,1,2,1,0,1,1,2,2,0,2,2,2,1,0,0,1,2,0,1,0,0,2,0,2]

> size g
65

> size (removeEdge 0 1 g)
125

> p = path [1..10]
> size p
18
> size (removeEdge 5 6 p)
19

> q = path [1..100]
> size q
198
> size (removeEdge 50 51 q)
199

> r = clique [1..10]
> size r
10
> size (removeEdge 5 6 r)
19

> s = clique [1..100]
> size s
100
> size (removeEdge 50 51 s)
199

> z = clique [1,2,3,4,5,6,7,8,9,1]
> size z
10
> size (removeEdge 1 5 z)
26

Anyway, I'm satisfied for now, so I'm closing this issue.

from alga.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.