From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!news.fcku.it!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Simple Components (Generic_Directed_Graph) Date: Mon, 30 Oct 2017 21:43:23 +0100 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: MajGvm9MbNtGBKE7r8NgYA.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:48675 Date: 2017-10-30T21:43:23+01:00 List-Id: 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