comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Simple Components (Generic_Directed_Graph)
Date: Mon, 30 Oct 2017 21:43:23 +0100
Date: 2017-10-30T21:43:23+01:00	[thread overview]
Message-ID: <ot82ta$1prq$1@gioia.aioe.org> (raw)
In-Reply-To: ot7r4v$1caq$1@gioia.aioe.org

On 2017-10-30 19:30, Victor Porton wrote:

> Oh, I've finally realized that Node_Type and Node are not the same type. Now
> your logic seems clear.
> 
> But how to solve my particular problem?
> 
> I have two objects (URI1 and URI2) of URI_Type type each (or for simplicity
> both could be two strings). I need to check if there exists a path from URI1
> to URI2. How to do this?

    URI1 : Node := new String'("http://foo.html");
    URI2 : Node := new String'("http://bar.html");
    URI3 : Node := new String'("http://baz.html");
begin
    Connect (URI1, URI2);
    Connect (URI2, URI3);
    --
    -- The graph is now:
    --
    -- "http://foo.html" -> "http://bar.html" -> "http://baz.html"
    --
    if Is_Ancestor (URI1, URI2) then
       -- There is a path in the graph

> My current idea is to use Ada standard "map" container which could map from
> "access URI_Type" to "URI_Type" (for all URIs in the considered finite set)
> before asking your generic package for existence of a path.

If you are concerned about performance in the case when same tests 
frequently repeat, you can keep a map (Node,Node)-> Boolean in order to 
cache once evaluated results.

> The same problem appears when I insert new edges: An edge should be
> identified by two values of type URI_Type but you require two accesses to
> URI_Type instead. Should I convert URI_Type to "access URI_Type" using a
> standard map before inserting into the graph?

You cannot convert it, node objects are allocated in a special storage 
pool backed by the pool passed as the package parameter. The graph 
structure is stored in that pool as well.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2017-10-30 20:43 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-30 10:41 Simple Components (Generic_Directed_Graph) Victor Porton
2017-10-30 11:04 ` Victor Porton
2017-10-30 11:34   ` Dmitry A. Kazakov
2017-10-30 11:23 ` Dmitry A. Kazakov
2017-10-30 14:58   ` Victor Porton
2017-10-30 15:46     ` Dmitry A. Kazakov
2017-10-30 17:46       ` Dennis Lee Bieber
2017-10-30 20:29         ` Dmitry A. Kazakov
2017-10-30 15:13   ` Victor Porton
2017-10-30 15:54     ` Dmitry A. Kazakov
2017-10-30 18:30   ` Victor Porton
2017-10-30 20:43     ` Dmitry A. Kazakov [this message]
2017-10-30 21:20       ` Victor Porton
2017-10-30 22:39         ` Dmitry A. Kazakov
2017-10-31  7:36           ` Simon Wright
2017-10-31  8:16             ` Dmitry A. Kazakov
2017-10-31 11:12           ` Victor Porton
2017-10-31 12:42             ` Dmitry A. Kazakov
2017-10-31 15:07               ` Victor Porton
2017-10-31 15:48                 ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox