From 2bc8f168b0311d43d4b6a8f7a0104de4dfd671fe Mon Sep 17 00:00:00 2001 From: bipashabg Date: Sat, 16 Aug 2025 00:33:43 +0530 Subject: [PATCH 1/5] update query --- docqueries/ordering/sloanOrdering.pg | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docqueries/ordering/sloanOrdering.pg b/docqueries/ordering/sloanOrdering.pg index 71f366851b..7f56b7d4d4 100644 --- a/docqueries/ordering/sloanOrdering.pg +++ b/docqueries/ordering/sloanOrdering.pg @@ -6,3 +6,41 @@ SELECT * FROM pgr_sloanOrdering( ); /* -- q2 */ +CREATE TABLE example_edges1 ( + id SERIAL PRIMARY KEY, + source INTEGER, + target INTEGER, + cost DOUBLE PRECISION, + reverse_cost DOUBLE PRECISION +); +/* --q3 */ +INSERT INTO example_edges1 (source, target, cost, reverse_cost) VALUES +(4, 7, 1, 1), +(7, 4, 1, 1), +(7, 9, 1, 1), +(9, 7, 1, 1), +(7, 0, 1, 1), +(0, 7, 1, 1), +(0, 2, 1, 1), +(2, 0, 1, 1), +(2, 5, 1, 1), +(5, 2, 1, 1), +(5, 9, 1, 1), +(9, 5, 1, 1), +(9, 8, 1, 1), +(8, 9, 1, 1), +(9, 1, 1, 1), +(1, 9, 1, 1), +(5, 1, 1, 1), +(1, 5, 1, 1), +(9, 6, 1, 1), +(6, 9, 1, 1), +(6, 3, 1, 1), +(3, 6, 1, 1), +(1, 3, 1, 1), +(3, 1, 1, 1); +/* --q4 */ +SELECT * FROM pgr_sloanOrdering( + 'SELECT id, source, target, cost, reverse_cost FROM example_edges1' +); +/* --q5 */ From 51d658ba22213a369c7488a933f5fe1a222b6592 Mon Sep 17 00:00:00 2001 From: bipashabg Date: Sun, 17 Aug 2025 01:44:49 +0530 Subject: [PATCH 2/5] update result --- docqueries/ordering/sloanOrdering.result | 54 ++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/docqueries/ordering/sloanOrdering.result b/docqueries/ordering/sloanOrdering.result index 15c394c429..c9588b67bb 100644 --- a/docqueries/ordering/sloanOrdering.result +++ b/docqueries/ordering/sloanOrdering.result @@ -28,5 +28,59 @@ SELECT * FROM pgr_sloanOrdering( (17 rows) /* -- q2 */ +CREATE TABLE example_edges1 ( + id SERIAL PRIMARY KEY, + source INTEGER, + target INTEGER, + cost DOUBLE PRECISION, + reverse_cost DOUBLE PRECISION +); +CREATE TABLE +/* --q3 */ +INSERT INTO example_edges1 (source, target, cost, reverse_cost) VALUES +(4, 7, 1, 1), +(7, 4, 1, 1), +(7, 9, 1, 1), +(9, 7, 1, 1), +(7, 0, 1, 1), +(0, 7, 1, 1), +(0, 2, 1, 1), +(2, 0, 1, 1), +(2, 5, 1, 1), +(5, 2, 1, 1), +(5, 9, 1, 1), +(9, 5, 1, 1), +(9, 8, 1, 1), +(8, 9, 1, 1), +(9, 1, 1, 1), +(1, 9, 1, 1), +(5, 1, 1, 1), +(1, 5, 1, 1), +(9, 6, 1, 1), +(6, 9, 1, 1), +(6, 3, 1, 1), +(3, 6, 1, 1), +(1, 3, 1, 1), +(3, 1, 1, 1); +INSERT 0 24 +/* --q4 */ +SELECT * FROM pgr_sloanOrdering( + 'SELECT id, source, target, cost, reverse_cost FROM example_edges1' +); + seq | node +-----+------ + 1 | 4 + 2 | 0 + 3 | 2 + 4 | 7 + 5 | 8 + 6 | 5 + 7 | 9 + 8 | 3 + 9 | 1 + 10 | 6 +(10 rows) + +/* --q5 */ ROLLBACK; ROLLBACK From a6900a01f0c7d89372f4dd9799a1f4c1fc2d2756 Mon Sep 17 00:00:00 2001 From: bipashabg Date: Sun, 17 Aug 2025 04:05:32 +0530 Subject: [PATCH 3/5] update ordering_driver.cpp to insert vertices in order of id --- docqueries/ordering/sloanOrdering.result | 16 ++++++++-------- src/ordering/ordering_driver.cpp | 8 +++++++- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/docqueries/ordering/sloanOrdering.result b/docqueries/ordering/sloanOrdering.result index c9588b67bb..5136f23e08 100644 --- a/docqueries/ordering/sloanOrdering.result +++ b/docqueries/ordering/sloanOrdering.result @@ -10,17 +10,17 @@ SELECT * FROM pgr_sloanOrdering( -----+------ 1 | 1 2 | 3 - 3 | 6 - 4 | 5 - 5 | 10 + 3 | 8 + 4 | 9 + 5 | 12 6 | 7 - 7 | 9 - 8 | 15 - 9 | 8 + 7 | 5 + 8 | 17 + 9 | 6 10 | 11 11 | 16 - 12 | 12 - 13 | 17 + 12 | 10 + 13 | 15 14 | 1 15 | 1 16 | 1 diff --git a/src/ordering/ordering_driver.cpp b/src/ordering/ordering_driver.cpp index cf45c4d01a..2bc5086d98 100644 --- a/src/ordering/ordering_driver.cpp +++ b/src/ordering/ordering_driver.cpp @@ -89,9 +89,15 @@ do_ordering( std::vector results; - pgrouting::UndirectedGraph undigraph; +#if 0 + pgrouting::UndirectedGraph undigraph; +#else + auto vertices(pgrouting::extract_vertices(edges)); + pgrouting::UndirectedGraph undigraph(vertices); +#endif undigraph.insert_edges(edges); + // log << undigraph; if (which == 0) { results = sloanOrdering(undigraph); } From 4783e38cf1a4757c1e6971baba74caa8729376b2 Mon Sep 17 00:00:00 2001 From: bipashabg Date: Sun, 17 Aug 2025 04:08:24 +0530 Subject: [PATCH 4/5] fix style check errors --- src/ordering/ordering_driver.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ordering/ordering_driver.cpp b/src/ordering/ordering_driver.cpp index 2bc5086d98..ac0729dcde 100644 --- a/src/ordering/ordering_driver.cpp +++ b/src/ordering/ordering_driver.cpp @@ -90,10 +90,10 @@ do_ordering( std::vector results; #if 0 - pgrouting::UndirectedGraph undigraph; + pgrouting::UndirectedGraph undigraph; #else - auto vertices(pgrouting::extract_vertices(edges)); - pgrouting::UndirectedGraph undigraph(vertices); + auto vertices(pgrouting::extract_vertices(edges)); + pgrouting::UndirectedGraph undigraph(vertices); #endif undigraph.insert_edges(edges); From 423aa90887ba9893cb11173e39c4aa0566e2e3b7 Mon Sep 17 00:00:00 2001 From: bipashabg Date: Sun, 17 Aug 2025 04:11:08 +0530 Subject: [PATCH 5/5] update doc file --- doc/ordering/pgr_sloanOrdering.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ordering/pgr_sloanOrdering.rst b/doc/ordering/pgr_sloanOrdering.rst index 006c168def..7ecb03d98b 100644 --- a/doc/ordering/pgr_sloanOrdering.rst +++ b/doc/ordering/pgr_sloanOrdering.rst @@ -40,6 +40,7 @@ The Sloan ordering algorithm reorders the vertices of a graph to reduce bandwidt *Aims to mininimize bandwidth (maximum difference between connected vertex indices. *The implementation is for undirected graphs *Typically produces better orderings than simple breadth-first approaches. + *Run time is 0.115846 seconds. |Boost| Boost Graph inside Signatures