I saw a post on Reddit (https://www.reddit.com/r/math/comments/ci50d3/visualizing_mathematical_subjects/) that utilizes label propagation, Fruchterman-Reingold algorithm, and edge betweenness clustering to classify mathematical subjects based on papers in 2018 on arxiv.org.
In a math book, definitions and theorems are often numbered. We can create a directed graph by using these numbers as nodes. If number A is referenced in the proof of number B, an arrow is drawn from A to B. The resulting directed graph represents the logical relationship (or understanding order) between these numbers. This graph can then be arranged as tree. The first layer usually will have the most nodes, but the nodes in the later layers are more likely to be the focus of an exam or be a book's main results. I think this graph has the following advantages:
- Knowing the general structure of the book before reading
- Easily allocating attention while reading, such as focusing on the current key number and ignoring non-essential (logical) relationships
- Quickly finding numbers that were not fully understood, memorized when encountering a difficult number
- Reading in reverse order, starting from the last few layers and reading backwards, which naturally engages more attention on the last few layers layers. So perhaps achieve the attention mode of the review stage after reading or when doing practice problems at the very beginning.
To draw the arrows between numbers, instead of manually searching for each number using ctrl+F in the PDF, it should also be possible to directly search for all numbers or keywords in the text and convert the order of numbers in the text to the graph, since if number A appears again between number B and C, it is likely that it is referenced in the proof of number B. It's worth noting that some math books number definitions and theorem separately, while others number them all together.
I have searched for pre-existing graph tools on the internet but have not found any that fit my needs. My questions are :
- Are there any programming books that cover the implementation of algorithms such as label propagation, Fruchterman-Reingold, edge betweenness clustering, converting directed graphs to tree graphs, or other advanced graph algorithms? I'm a math back ground student, have basic knowledge of Python.
- How can I retrieve all specified keywords in a PDF and generate their appearing order in the PDF?
Here is an example I created for a math lecture notes, of a course I take this year, using https://csacademy.com/app/graph_editor/, I did it manually as I described above.