https://community.kde.org/api.php?action=feedcontributions&user=Ctonetti&feedformat=atomKDE Community Wiki - User contributions [en]2019-10-16T00:33:24ZUser contributionsMediaWiki 1.31.3https://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85816GSoC/2019/StatusReports/CaioTonetti2019-08-24T20:29:46Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
=== Repository ===<br />
<br />
I have talked with my mentors and we decided that right now is not a good moment to implement a remote repository for the scripts, as the ROCS is still lacking in other more important features that need to be implemented first (see ''What's Next'' for some examples).<br />
<br />
When the time comes in the future, we can easily implement this features by using [https://techbase.kde.org/Development/Tutorials/Collaboration/HotNewStuff GHNS] and [https://www.opendesktop.org/ Open Desktop] to host and retrieve files.<br />
<br />
== Commits == <br />
It's is possible to check what was merged and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== What's Next? ==<br />
<br />
There are still many things that can be improved in the ROCS software that go out of the scope of my project. Here are some examples:<br />
<br />
* Implementation of a better algorithm to position the nodes and edges on the plane. I can recommend the use of [https://en.wikipedia.org/wiki/Force-directed_graph_drawing Force-directed graph drawing] algorithms, because they are usually fast and are physics-based;<br />
* Create a better interface workflow for the program. I can recommend something like the ''Possible New Configuration'' image. This configuration consider that the user will spend most part of the time programming, so it creates a better writing space, while the view has a more square shape, which is (in my opinion), better for visualization;<br />
* Remodelation of how each graph is represented in the javascript code. The type system is good to provide a global configuration, but I think it falls apart when dealing with individual edges and dynamic creation of subgraphs and new edges/nodes (which is needed in some algorithms);<br />
* Rewrite the view to deal with some problems related to the space of the graphs that is really limited, mouse clicks not working correctly and bad navigation;<br />
* Change how the icons are used by the ROCS, as some icons don't have cross-compatibility between some systems.<br />
<br />
[[File:Possible New Configuration.png|thumb|Possible New Configuration]]<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''KDE Invent ID:''' https://invent.kde.org/ctonetti<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
Final_screen.png|Final print of the ROCS with modifications<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=File:Final_screen.png&diff=85815File:Final screen.png2019-08-24T20:29:03Z<p>Ctonetti: Print screen of the ROCS after modifications.</p>
<hr />
<div>== Summary ==<br />
Print screen of the ROCS after modifications.</div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85793GSoC/2019/StatusReports/CaioTonetti2019-08-23T20:07:42Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
=== Repository ===<br />
<br />
I have talked with my mentors and we decided that right now is not a good moment to implement a remote repository for the scripts, as the ROCS is still lacking in other more important features that need to be implemented first (see ''What's Next'' for some examples).<br />
<br />
When the time comes in the future, we can easily implement this features by using [https://techbase.kde.org/Development/Tutorials/Collaboration/HotNewStuff GHNS] and [https://www.opendesktop.org/ Open Desktop] to host and retrieve files.<br />
<br />
== Commits == <br />
It's is possible to check what was merged and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== What's Next? ==<br />
<br />
There are still many things that can be improved in the ROCS software that go out of the scope of my project. Here are some examples:<br />
<br />
* Implementation of a better algorithm to position the nodes and edges on the plane. I can recommend the use of [https://en.wikipedia.org/wiki/Force-directed_graph_drawing Force-directed graph drawing] algorithms, because they are usually fast and are physics-based;<br />
* Create a better interface workflow for the program. I can recommend something like the ''Possible New Configuration'' image. This configuration consider that the user will spend most part of the time programming, so it creates a better writing space, while the view has a more square shape, which is (in my opinion), better for visualization;<br />
* Remodelation of how each graph is represented in the javascript code. The type system is good to provide a global configuration, but I think it falls apart when dealing with individual edges and dynamic creation of subgraphs and new edges/nodes (which is needed in some algorithms);<br />
* Rewrite the view to deal with some problems related to the space of the graphs that is really limited, mouse clicks not working correctly and bad navigation;<br />
* Change how the icons are used by the ROCS, as some icons don't have cross-compatibility between some systems.<br />
<br />
[[File:Possible New Configuration.png|thumb|Possible New Configuration]]<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''KDE Invent ID:''' https://invent.kde.org/ctonetti<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85722GSoC/2019/StatusReports/CaioTonetti2019-08-21T20:56:44Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
=== Repository ===<br />
<br />
<br />
<br />
== Commits == <br />
It's is possible to check what was merged and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== What's Next? ==<br />
<br />
There are still many things that can be improved in the ROCS software that go out of the scope of my project. Here are some examples:<br />
<br />
* Implementation of a better algorithm to position the nodes and edges on the plane. I can recommend the use of [https://en.wikipedia.org/wiki/Force-directed_graph_drawing Force-directed graph drawing] algorithms, because they are usually fast and are physics-based;<br />
* Create a better interface workflow for the program. I can recommend something like the ''Possible New Configuration'' image. This configuration consider that the user will spend most part of the time programming, so it creates a better writing space, while the view has a more square shape, which is (in my opinion), better for visualization;<br />
* Remodelation of how each graph is represented in the javascript code. The type system is good to provide a global configuration, but I think it falls apart when dealing with individual edges and dynamic creation of subgraphs and new edges/nodes (which is needed in some algorithms);<br />
* Rewrite the view to deal with some problems related to the space of the graphs that is really limited, mouse clicks not working correctly and bad navigation.<br />
<br />
[[File:Possible New Configuration.png|thumb|Possible New Configuration]]<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''KDE Invent ID:''' https://invent.kde.org/ctonetti<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85721GSoC/2019/StatusReports/CaioTonetti2019-08-21T20:55:50Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
=== Repository ===<br />
<br />
<br />
<br />
== Commits == <br />
It's is possible to check what was merged and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== What's Next? ==<br />
<br />
There are still many things that can be improved in the ROCS software that go out of the scope of my project. Here are some examples:<br />
<br />
* Implementation of a better algorithm to position the nodes and edges on the plane. I can recommend the use of [https://en.wikipedia.org/wiki/Force-directed_graph_drawing Force-directed graph drawing] algorithms, because they are usually fast and are physics-based;<br />
* Create a better interface workflow for the program. I can recommend something like the ''Possible New Configuration'' image. This configuration consider that the user will spent most part of the time programming, so it creates a better writing space, while the view has a more square shape, which is (in my opinion), better for visualization;<br />
* Remodelation of how each graph is represented in the javascript code. The type system is good to provide a global configuration, but I think it falls apart when dealing with individual edges and dynamic creation of subgraphs and new edges/nodes (which is needed in some algorithms);<br />
* Rewrite the view to deal with some problems related to the space of the graphs that is really limited, mouse clicks not working correctly and bad navigation.<br />
<br />
[[File:Possible New Configuration.png|thumb|Possible New Configuration]]<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''KDE Invent ID:''' https://invent.kde.org/ctonetti<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=File:Possible_New_Configuration.png&diff=85719File:Possible New Configuration.png2019-08-21T20:01:31Z<p>Ctonetti: </p>
<hr />
<div>A possible new configuration of the interface.</div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85717GSoC/2019/StatusReports/CaioTonetti2019-08-21T19:37:33Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
=== Repository ===<br />
<br />
<br />
<br />
== Commits == <br />
It's is possible to check what was merged and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''KDE Invent ID:''' https://invent.kde.org/ctonetti<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85716GSoC/2019/StatusReports/CaioTonetti2019-08-21T19:34:18Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
== Commits == <br />
It's is possible to check what was merged and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''KDE Invent ID:''' https://invent.kde.org/ctonetti<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85715GSoC/2019/StatusReports/CaioTonetti2019-08-21T19:30:42Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
== Commits == <br />
It's is possible to check what was merged and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85714GSoC/2019/StatusReports/CaioTonetti2019-08-21T19:30:03Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that it can generate all possible tree with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
=== Example Scripts ===<br />
<br />
All the planned algorithms were implemented using the script language (Javascript). Some of the data structures implemented were not implemented in the most efficient manner, resulting in different complexities. The implementation of better data structures can be left to the student focusing in learning the algorithms, as it only change the general complexity and not the graph algorithm in itself.<br />
<br />
An short explanation and the general time complexity is showed in the beginning of each script, as can be seen in the ''Script Explanation Example'' image.<br />
<br />
[[File:Script Explanation Example.png|thumb|Script Explanation Example]]<br />
<br />
== Commits == <br />
It's is possible to check what was merge and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=File:Script_Explanation_Example.png&diff=85713File:Script Explanation Example.png2019-08-21T19:28:18Z<p>Ctonetti: </p>
<hr />
<div>An example of a short explanation of the algorithm implemented in the script.</div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85712GSoC/2019/StatusReports/CaioTonetti2019-08-21T19:17:00Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Information about the algorithm and time complexiy of all added script examples.<br />
<br />
== Information ==<br />
<br />
=== Graph Creation Tools ===<br />
<br />
All Graph Creation tools planned were implemented in the ROCS software. In this part, the generation of Cycles (called circle graph in ROCS) and random graphs were already implemented, so it was not listed as implemented in the feature list.<br />
<br />
A additional modification was made on the Tree generation algorithm, as he was generating invalid tree graphs depending on which edge direction was used in the generator (resulting in cycles). The new algorithm used is presented in [https://link.springer.com/chapter/10.1007%2F3-540-44862-4_95 this] paper, and it is proved that all trees are possible to be generated with equal probabilities.<br />
<br />
=== Step-by-Step Execution and Debugging ===<br />
<br />
This feature is provided by the use of the '''QScriptEngineDebugger''' class, that already offers a complete debugger interface for the '''QScriptEngine''', as can be seen in the ''Debugger Interface'' image.<br />
<br />
[[File:Debugger Interface.png|thumb|Debugger Interface]]<br />
<br />
So, a special button was created to identify when the programmer want to use the debugger or not (showed in the ''Debugger Button'' image). When it is clicked, the debugger will be launched with the code being run and the programmer can debug the code properly. Otherwise the code will be run normally.<br />
<br />
[[File:Debugger Button.png|thumb|Debugger Button]]<br />
<br />
It is important to note that the support for the '''Webkit''' in Qt is deprecated and should be target of revision in the future when Qt version 6 is around. One of the main problems in using the new '''QJsEngine''' right now is the missing debugger feature.<br />
<br />
== Commits == <br />
It's is possible to check what was merge and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=File:Debugger_Button.png&diff=85710File:Debugger Button.png2019-08-21T19:08:28Z<p>Ctonetti: </p>
<hr />
<div>The debugger button of the rocs software.</div>Ctonettihttps://community.kde.org/index.php?title=File:Debugger_Interface.png&diff=85709File:Debugger Interface.png2019-08-21T19:04:48Z<p>Ctonetti: </p>
<hr />
<div>The debugger interface offered by the QScriptEngineDebugger class.</div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85690GSoC/2019/StatusReports/CaioTonetti2019-08-21T01:54:21Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Informations and time complexiy of all added script examples.<br />
<br />
== Information == <br />
<br />
<br />
== Commits == <br />
It's is possible to check what was merge and what was not in the following links. All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85689GSoC/2019/StatusReports/CaioTonetti2019-08-21T01:53:07Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Informations and time complexiy of all added script examples.<br />
<br />
== Information == <br />
<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/12 Debugger option on script menu]<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85659GSoC/2019/StatusReports/CaioTonetti2019-08-19T19:01:54Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code removal;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Informations and time complexiy of all added script examples.<br />
<br />
== Information == <br />
<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85646GSoC/2019/StatusReports/CaioTonetti2019-08-19T17:49:50Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Informations and time complexiy of all added script examples.<br />
<br />
== Information == <br />
<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85645GSoC/2019/StatusReports/CaioTonetti2019-08-19T17:45:18Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools;<br />
** Informations and time complexiy of all added script examples.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85643GSoC/2019/StatusReports/CaioTonetti2019-08-19T17:40:10Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''' in the future, as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85642GSoC/2019/StatusReports/CaioTonetti2019-08-19T17:37:04Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''', as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85641GSoC/2019/StatusReports/CaioTonetti2019-08-19T17:31:44Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''', as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* Added a interface to '''Transform Edges''' to remove self-edges from the graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85640GSoC/2019/StatusReports/CaioTonetti2019-08-19T17:30:08Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool'''; <br />
* '''Complete Graph Creation Tool''';<br />
* '''Complete Bipartite Graph Creation Tool''';<br />
* '''Random Directed Acyclical Graph Creation Tool''';<br />
* '''Random Tree Creation Tool''' (Modified to a more well behaved random tree creation tool);<br />
* '''Script Examples:'''<br />
** Added '''Depth-First Search Algorithm''';<br />
** Fixed '''Breadth-First Search Algorithm''';<br />
** Added '''Topological Sorting Algorithm''';<br />
** Fixed '''Prim Algorithm''';<br />
** Added '''Kruskal Algorithm''';<br />
** Added '''Dijkstra Algorithm''';<br />
** Added '''Bellman-Ford Algorithm''';<br />
** Added '''Floyd-Warshall Algorithm''';<br />
** Added '''Bipartite Matching Algorithm'''.<br />
* Added a interface to access the debugger tools ('''QScriptEngineDebugger''') of our main script engine ('''QScriptEngine'''). But this one may be reworked to the new '''QJsEngine''', as the classes we are using today are not present in the default Qt installation (But they can be compiled separately);<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code;<br />
** Changed the '''Mersenne Twister''' from the booster library to the standard library;<br />
** Fixed the Generator Seeds of the graph generator widget;<br />
** Changed the '''Topology''' class to static access only;<br />
** Added correct edge type check on the DAG and Tree creation tools.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
<br />
== Commits == <br />
All my work can be accessed in the following Merge Requests:<br />
* [https://invent.kde.org/kde/rocs/merge_requests/11 Self Edges Removal on Transform Edges];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/4 Improved Examples];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/3 Improved Dag/Tree Algorithm];<br />
* [https://invent.kde.org/kde/rocs/merge_requests/2 Improved Graph IDE - Classes].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85070GSoC/2019/StatusReports/CaioTonetti2019-06-24T07:57:27Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool:''' Tool for creation of Path Graphs; <br />
* '''Complete Graph Creation Tool:''' Tool for creation of Complete Graphs;<br />
* '''Complete Bipartite Graph Creation Tool:''' Tool for creation of Complete Bipartite Graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More fixes in the graph class creation, as the original algorithm for tree creation is not working properly;<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
* The step-by-step execution.<br />
<br />
== Commits == <br />
My commits are on my branch on the invent.kde.org forked repo: [https://invent.kde.org/ctonetti/rocs/commits/improved-graph-ide-classes improved-graph-ide-classes]. <br />
As the team is not big, one of my mentors advised to not use the phabricator, as it would only complicate our workflow. So,<br />
our code will be revised in merge requests on the invent.kde.org repo, which there is one as a WIP right now: [https://invent.kde.org/kde/rocs/merge_requests/2 Merge Request].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85069GSoC/2019/StatusReports/CaioTonetti2019-06-24T07:56:32Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool:''' Tool for creation of Path Graphs; <br />
* '''Complete Graph Creation Tool:''' Tool for creation of Complete Graphs;<br />
* '''Complete Bipartite Graph Creation Tool:''' Tool for creation of Complete Bipartite Graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More fixes in the graph class creation, as the original algorithm for tree creation is not working properly;<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
* The step-by-step execution.<br />
<br />
== Commits == <br />
My commits are on my branch on the invent.kde.org forked repo: [https://invent.kde.org/ctonetti/rocs/commits/improved-graph-ide-classes improved-graph-ide-classes]. <br />
As the team is not big, one of my mentors advised to not use the phabricator, as it would only complicate our workflow. So,<br />
our code will be revised in merge requests on the invent.kde.org repo, which there is one as a WIP right now: [https://invent.kde.org/kde/rocs/merge_requests/2 Merge Request].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': [chst.dev chst.dev]<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85068GSoC/2019/StatusReports/CaioTonetti2019-06-24T07:50:56Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool:''' Tool for creation of Path Graphs; <br />
* '''Complete Graph Creation Tool:''' Tool for creation of Complete Graphs;<br />
* '''Complete Bipartite Graph Creation Tool:''' Tool for creation of Complete Bipartite Graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More fixes in the graph class creation, as the original algorithm for tree creation is not working properly;<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
* The step-by-step execution.<br />
<br />
== Commits == <br />
My commits are on my branch on the invent.kde.org forked repo: [https://invent.kde.org/ctonetti/rocs/commits/improved-graph-ide-classes improved-graph-ide-classes]. <br />
As the team is not big, one of my mentors advised to not use the phabricator, as it would only complicate our workflow. So,<br />
our code will be revised in merge requests on the invent.kde.org repo, which there is one as a WIP right now: [https://invent.kde.org/kde/rocs/merge_requests/2 Merge Request].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
EdgeTypesChanged.png|Detail of the default Edge Types changed<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85067GSoC/2019/StatusReports/CaioTonetti2019-06-24T07:50:12Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool:''' Tool for creation of Path Graphs; <br />
* '''Complete Graph Creation Tool:''' Tool for creation of Complete Graphs;<br />
* '''Complete Bipartite Graph Creation Tool:''' Tool for creation of Complete Bipartite Graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More fixes in the graph class creation, as the original algorithm for tree creation is not working properly;<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
* The step-by-step execution.<br />
<br />
== Commits == <br />
My commits are on my branch on the invent.kde.org forked repo: [https://invent.kde.org/ctonetti/rocs/commits/improved-graph-ide-classes improved-graph-ide-classes]. <br />
As the team is not big, one of my mentors advised to not use the phabricator, as it would only complicate our workflow. So,<br />
our code will be revised in merge requests on the invent.kde.org repo, which there is one as a WIP right now: [https://invent.kde.org/kde/rocs/merge_requests/2 Merge Request].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
PathMenu.png|Menu of the Path Graph Creation Tool<br />
CompleteMenu.png|Menu of the Complete Graph Creation Tool<br />
CompleteBipartiteMenu.png|Menu of the Complete Bipartite Graph Creation Tool<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=File:EdgeTypesChanged.png&diff=85066File:EdgeTypesChanged.png2019-06-24T07:44:55Z<p>Ctonetti: On the right side, down menu we can see the new configurations for the edge types.</p>
<hr />
<div>On the right side, down menu we can see the new configurations for the edge types.</div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85065GSoC/2019/StatusReports/CaioTonetti2019-06-24T07:41:58Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool:''' Tool for creation of Path Graphs; <br />
* '''Complete Graph Creation Tool:''' Tool for creation of Complete Graphs;<br />
* '''Complete Bipartite Graph Creation Tool:''' Tool for creation of Complete Bipartite Graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More fixes in the graph class creation, as the original algorithm for tree creation is not working properly;<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
* The step-by-step execution.<br />
<br />
== Commits == <br />
My commits are on my branch on the invent.kde.org forked repo: [https://invent.kde.org/ctonetti/rocs/commits/improved-graph-ide-classes improved-graph-ide-classes]. <br />
As the team is not big, one of my mentors advised to not use the phabricator, as it would only complicate our workflow. So,<br />
our code will be revised in merge requests on the invent.kde.org repo, which there is one as a WIP right now: [https://invent.kde.org/kde/rocs/merge_requests/2 Merge Request].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
[[File:PathMenu.png]]<br />
[[File:CompleteMenu.png]]<br />
[[File:CompleteBipartiteMenu.png]]<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=File:PathMenu.png&diff=85064File:PathMenu.png2019-06-24T07:41:00Z<p>Ctonetti: Path Graph creation menu.</p>
<hr />
<div>Path Graph creation menu.</div>Ctonettihttps://community.kde.org/index.php?title=File:CompleteMenu.png&diff=85063File:CompleteMenu.png2019-06-24T07:40:24Z<p>Ctonetti: Complete Graph creation menu.</p>
<hr />
<div>Complete Graph creation menu.</div>Ctonettihttps://community.kde.org/index.php?title=File:CompleteBipartiteMenu.png&diff=85062File:CompleteBipartiteMenu.png2019-06-24T07:39:41Z<p>Ctonetti: Complete Bipartite graph creation tool.</p>
<hr />
<div>Complete Bipartite graph creation tool.</div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85061GSoC/2019/StatusReports/CaioTonetti2019-06-24T07:33:04Z<p>Ctonetti: </p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool:''' Tool for creation of Path Graphs; <br />
* '''Complete Graph Creation Tool:''' Tool for creation of Complete Graphs;<br />
* '''Complete Bipartite Graph Creation Tool:''' Tool for creation of Complete Bipartite Graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More fixes in the graph class creation, as the original algorithm for tree creation is not working properly;<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
* The step-by-step execution.<br />
<br />
== Commits == <br />
My commits are on my branch on the invent.kde.org forked repo: [https://invent.kde.org/ctonetti/rocs/commits/improved-graph-ide-classes improved-graph-ide-classes]. <br />
As the team is not big, one of my mentors advised to not use the phabricator, as it would only complicate our workflow. So,<br />
our code will be revised in merge requests on the invent.kde.org repo, which there is one as a WIP right now: [https://invent.kde.org/kde/rocs/merge_requests/2 Merge Request].<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screenshots ==<br />
<gallery><br />
<br />
</gallery></div>Ctonettihttps://community.kde.org/index.php?title=GSoC/2019/StatusReports/CaioTonetti&diff=85060GSoC/2019/StatusReports/CaioTonetti2019-06-24T07:30:23Z<p>Ctonetti: Created page with "== Project Overview == '''Project Name:''' An Improved Graph Theory IDE<br /> '''Purpose:''' As a student, I use graphs in almost everything related to my master’s research...."</p>
<hr />
<div>== Project Overview ==<br />
'''Project Name:''' An Improved Graph Theory IDE<br /><br />
'''Purpose:''' As a student, I use graphs in almost everything related to my master’s research. Graph Theory is a great mathematical tool for programmers and mathematicians, as it facilitates some computational problems resolution and modelling. However, is not always easy to understand the underlying theory and algorithms.<br />
<br />
Rocs (https://kde.org/applications/education/rocs) is a Graph Theory IDE created in January of 2010, with new updates still being committed almost every month, currently in the KDE repositories, designed for lecturers, students and researchers. It is composed of a visual data structure and a powerful scripting engine in Javascript. Though useful for creating simple graphs, it is still lacking the tools to simplify the creation of bigger graphs, and also of basic graph theory algorithms for beginners. Another improvement it should have is a step by step execution system, in order to fully comprehend the algorithms and facilitate debugging.<br />
<br />
== List of Added Features ==<br />
I have added the following features for the first evaluation:<br />
* '''Path Graph Creation Tool:''' Tool for creation of Path Graphs; <br />
* '''Complete Graph Creation Tool:''' Tool for creation of Complete Graphs;<br />
* '''Complete Bipartite Graph Creation Tool:''' Tool for creation of Complete Bipartite Graphs;<br />
* '''Miscellaneous Changes:''' <br />
** Removed the "default" edge type and created two new "unidiretional" and "bidiretional" edge types.<br />
** Default values for the some graph classes;<br />
** Variable names fixes;<br />
** Redundant code.<br />
<br />
== TODO == <br />
Currently, these features are yet to be implemented.<br />
* More fixes in the graph class creation, as the original algorithm for tree creation is not working properly;<br />
* More tests related to the functionalities implemented;<br />
* The repository is yet to be implemented;<br />
* The step-by-step execution.<br />
<br />
== Commits == <br />
My commits are on my branch on the invent.kde.org forked repo: [https://invent.kde.org/ctonetti/rocs/commits/improved-graph-ide-classes improved-graph-ide-classes]. <br />
As the team is not big, one of my mentors advised to not use the phabricator, as it would only complicate our workflow. So,<br />
our code will be revised in merge requests on the invent.kde.org repo.<br />
<br />
== About Me == <br />
* '''Name:''' Caio Henrique Segawa Tonetti<br />
* '''Blog''': chst.dev<br />
* '''Mentors:''' Tomaz Canabrava, Adriaan de Groot<br />
* '''Email:''' caio.tonetti@gmail.com<br />
* '''Github Id:''' https://github.com/LionsWrath<br />
* '''IRC nickname:''' ctonetti<br />
<br />
== Screen Shots ==<br />
<gallery><br />
<br />
</gallery></div>Ctonetti