Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

New function pgr_makeMaximalPlanar to be added in pgrouting

オープン
#3,141 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

  • #3134 @Mohit242-bit による — マージされずにクローズ

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
40/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
cpp, postgresql
領域
backend, databases

調査の方向性

The issue describes adding a new SQL function pgr_makeMaximalPlanar. Look at existing pgRouting functions in the source code to understand the pattern for wrapping Boost Graph Library algorithms. The linked pull request #3134 may show related work. Start by examining the directory structure for where graph algorithms are implemented and how they are exposed to PostgreSQL. The function must be added to the SQL signatures and the underlying C++ implementation.

索引モデルが issue の本文から書いたものです。

説明

GSoC planar

pgr_makeMaximalPlanar():

makeMaximalPlanar(): Maximal planar augmentation (triangulation) is an algorithm that takes a biconnected planar graph and adds edges until the graph becomes maximally planar. A graph is maximally planar if no more edges can be added without violating planarity, which results in a triangulated graph where every face is a triangle (satisfying Euler's formula E = 3V - 6). Triangulated planar graphs are required for advanced graph layout algorithms like Chrobak-Payne straight line drawing. This implementation uses the Boost Graph Library's make_maximal_planar algorithm with a time complexity of O(V + E), where V is the number of vertices and E is the number of edges. This will enhance pgRouting's capabilities in planar graph optimization and spatial rendering problems.

The algorithm:
  • Works on undirected graphs.
  • Requires the input graph to already be biconnected and planar.
  • Adds new edges between vertices strictly preserving the planarity of the embedding.
  • Outputs the set of edges added to the graph to triangulate it.
  • Running time: O(V + E) where V is the number of vertices and E is the number of edges.
Signature:
  • pgr_makeMaximalPlanar()
pgr_makeMaximalPlanar(Edges SQL)

Returns set of (seq, start_vid, end_vid)
OR EMPTY SET

Parameters

Parameter Type Description
Edges SQL TEXT Inner SQL query, as described below.
Inner Query

Edges SQL: An SQL query returning a set of rows with the following columns:

Column Type Default Description
id ANY-INTEGER Identifier of the edge.
source ANY-INTEGER Identifier of the first endpoint vertex of the edge.
target ANY-INTEGER Identifier of the second endpoint vertex of the edge.
cost ANY-NUMERICAL Weight of the edge (source, target). When negative, the edge does not exist.
reverse_cost ANY-NUMERICAL -1 Weight of the edge (target, source). When negative, the edge does not exist.

Where:

  • ANY-INTEGER = SMALLINT, INTEGER, BIGINT
  • ANY-NUMERICAL = SMALLINT, INTEGER, BIGINT, REAL, FLOAT
Result Columns

Returns SETOF (seq, start_vid, end_vid).

Column Type Description
seq BIGINT Sequential value starting from 1.
start_vid BIGINT Identifier of the first endpoint vertex of the added edge.
end_vid BIGINT Identifier of the second endpoint vertex of the added edge.
主要言語
C++
スター
1.4k
フォーク
397
平均マージ
2日 2時間
マージ済み PR(30日)
4

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pgRouting/pgrouting のほかの issue

pgRouting/pgrouting の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。