Hello David,

Thank you for your response.

Enumeration of Simple Cycles:
I reviewed the already implemented all_simple_cycles for directed graphs. I 
see that it uses a concept similar to Johnson's algorithm by obtaining 
strongly connected components (SCCs) and then using a BFS to enumerate 
cycles starting at the same vertex, along with a heap to store cycles from 
different starting vertices. This ensures that the shortest cycles are 
yielded first.

I believe we can extend this approach to support either undirected graphs 
or weighted graphs. For undirected graphs, we can use biconnected 
components to achieve a similar division as SCCs in directed graphs. For 
weighted graphs, instead of using a BFS, we can adopt a Dijkstra-like 
method by storing the cycle weight and sorting on it, which ensures that 
cycles with smaller weights are extracted first.

I also saw the suggestion of making an interface to networkX implemented 
method, but the current method does not support weighted graphs. I am still 
searching for more recent and efficient solutions for enumerating cycles in 
increasing order of weight.

K Shortest Simple Paths:
I have read the attached paper and reviewed the current implemented 
methods. I saw that two currently implemented algorithms are Yen’s 
algorithm and the Feng (node classification). The shortest_simple_paths 
method uses Yen’s algorithm for undirected graphs and Feng’s for directed 
graphs.

What I propose is implementing PNC (Postponed Node-Classification) and PSB 
(Parsimonious Sidetracks-Based) methods and deciding which to use based on 
certain thresholds (perhaps the average degree of nodes and the graph 
diameter) and some analysis to determine which is optimal, such as when the 
graph resembles a complex network.

These are the current approaches I am considering. Any feedback or 
suggestions would be greatly appreciated.

I am currently drafting a proposal. Would you be able to look over my 
proposal and provide feedback, and if so where should I send it?

Best regards,
Ziad

On Sunday, March 23, 2025 at 12:44:10 PM UTC+2 david....@inria.fr wrote:

> Thank you for your interest in this project and your first contributions 
> to Sagemath.
>
> Recall that the short description gives ideas for the project and you, the 
> potential contributor, are expected to turn the ideas into a full proposal.
>
> For algorithms, you can read for instance recent papers on the k shortest 
> simple paths like
> - https://dl.acm.org/doi/pdf/10.1145/3626567  and references there in
> - https://link.springer.com/article/10.1007/s12532-025-00276-0 
>
> Sincerely,
> David.
>
> On Saturday, March 22, 2025 at 10:20:24 PM UTC+1 Ziad Tarek wrote:
>
>> Hello everyone,
>>
>> I hope you are doing well.
>>
>> My name is Ziad, and I am interested in the *Paths and Cycles 
>> Enumeration Methods in Graphs* project for *GSOC 2025*.
>>
>> I have successfully built Sage from the source code and have started 
>> working on some issues (PR #39754 
>> <https://github.com/sagemath/sage/pull/39754>). While working on this, I 
>> also discovered a bug and opened a corresponding issue (#39756 
>> <https://github.com/sagemath/sage/issues/39756>), and I am currently 
>> working on a solution.
>>
>> I am actively familiarizing myself with the SageMath source code and hope 
>> to contribute more. I find the project fascinating and would appreciate any 
>> guidance you could provide to help me prepare better for GSOC.
>>
>> Thank you for your time!
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-gsoc" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-gsoc+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/sage-gsoc/b9c1c582-27c6-4518-a00f-37ec962473d8n%40googlegroups.com.

Reply via email to