title: Algorithm for creating dedicated paths between two nodes
body: <p>I've some texts that the sequence follows a specific order. Some texts change in consequence of the traversed trail. My goal is generate static pages for each page, interconnecting them through links.</p>
  
  <p>The question is to solve a problem for a tool that will generate text for printed books (that is static, obviously). So imagine you are reading a book that is represented in the Example 1 (on the image bellow). Initially, you're in the node A, and the text of this page is "Go to page B or page C". Choosing the node C, followed of F -> B -> E -> H, you'll see a content in the node H that should be different than what you would see whether you have been traversed by A -> B -> D -> H, for instance. As it is a printed book, I need to duplicate some paths to make possible change the content of some nodes according with the path traversed.</p>
  
  <p>Example:</p>
  
  <p><img src="https://i.stack.imgur.com/y8XVh.png" alt="Example"></p>
  
  <p>In this example, I have two possibilities for traversing:</p>
  
  <pre><code>A -&gt; B -&gt; D
  A -&gt; C -&gt; D
  </code></pre>
  
  <p>Expected result:</p>
  
  <pre><code>Page 1: A (link to page 2 and 3)
  Page 2: B (link to page 4)
  Page 3: C (link to page 5)
  Page 4: D
  Page 5: DD'
  </code></pre>
  
  <p>This simple example generates 5 pages, once the page 4 has a part of text that should be displayed only whether the reading passes through page 3.</p>
  
  <p>To model this problem I chose use the Graph Theory. For a better understanding, I drew in the below graph two examples of the problem I'm trying to solve :</p>
  
  <p><img src="https://i.stack.imgur.com/mvevk.png" alt="enter image description here"></p>
  
  <p><em>Note that the red dashed edges are not edges in fact. These are a way that I've used to represent when the content of the a given node X changes in consequence of visiting  the node Y (reads "the content of node X changes if the path to arrive in X passes by Y").</em></p>
  
  <p>I read a lot about graphs, traversing strategies (BFS and DFS) and some other topics. My goal is develop a algorithm that rearranges a given graph in a manner to be possible generate the pages mentioned previously.  I didn't find any well-known problem that solves this problem, but I believe it should already exist. My research didn't find anything useful, so I tried to solve by myself.</p>
  
  <p>My successfully approach consisted in traversing the graph up to find a node that contains a content that depends of others nodes. Once this node has been found, finds all paths from the dependent nodes to the current node. Traverses these paths duplicating all nodes that contains more than one incoming edge, removing the previous connection and connecting the current node with the duplicated one, and so on until consume all nodes of the path. This algorithm works well, but this approach is not efficient and can be very slow with long texts.</p>
  
  <p>My question is: do you know any other better way to solve this problem? Is there any theory or known algorithm that can solve this kind of problem?</p>
  
  <p>Thanks in advance.</p>