Ok-- The issue at hand is "Complexity of the signal processing system needed at each site" --VS-- Convenience of the rider.
Pure token ring uses a simple "Is it addressed to me? Yes/No" evaluation. If YES-- then accept the minecart and debark the rider. If NO, then pass the rider to the next station.
TokenRing assumes that all stations will be logically organized into a single ring, which goes one direction. (Most pictures have this going clockwise, but there are also anticlockwise implementations,)
Because it uses such a simple evaluation method, it does not need a sophisticated dwarfputer at the station. Just some logic to evaluate a unique ID of some sort. This can be hard wired logic that uses a few hundred mechanisms at most, for the full computer.
Star Topology on the other hand, branches out, and has many redundant paths. It is more fault tolerant than token ring, and can have more direct paths for a given destination if planned sensibly. The problem is that a more sophisticated computer is needed at each site in order to use it.
Star Topology is basically how TCP/IP network routers work. They have a number of "interfaces" on which they can accept or deliver a packet. Depending on where a packet is destined, a TCP/IP router will look to see if the destination is local to itself, and not send it out any of its external interfaces. If however, it is not a local address, it looks at a routing table to determine where it is going to send the packet for further evaluation by the next device downstream. This happens repeatedly until the packet lands in the target network's router. The global internet uses a 32bit addressing schema, which it has since WELL outgrown. (We are still using it, but are using all kinds of obfuscation tricks to do so.)
The basic problem comes down to having to implement added "Intelligence" into the routing part of the minecart transit system, along with a more sophisticated addressing schema than needed for the tokenring method.
Say for instance, we have 9 stations, all laid out in a nice orderly fashion, where each station has 4 connections. Say, something like this:
| | |
-A-B-C-
| | |
-D-E-F-
| | |
-G-H-I-
| | |
(A is connected B, D, G, and C, since we presume "wrap-around" in this exercise)
Urist wants to go from A to I.
What is the shortest path?
Well, he could go from A to C to I..... 3 steps
Or, he could go from A to G to I ..... 3 steps...
...
See the issue? There are redundant, equally expedient routes. How does site A know to send Urist to C, or to G? It has to make a decision, and therefore needs more information.
The only real way to do this, is to have each stop have its own little cheat-sheet on which route is preferred for what kind of traffic, and which routes are secondary routes, used only when the first route is broken. That's why you need the bigger computer, AND at EACH city. It has to do a hell of a lot more than just "Is this mine? No? Ok- pass the buck". Instead, it has to do "Is this mine? No? Ok-- Where is it going? What is my preferred route to get there? Ok- Is that route healthy? No? Ok, what's my secondary route? Is that route healthy? ... ... " Surely you see the difference in the level of complexity needed for branched delivery, right?
The idea for the transit hub is more like this:
Inside the mountainhome, (which should be as geographically equidistant to all other sites as possible for efficiency) there is a circular track with a "stop" for each and every site in the civilization. This circular track is kept as short as possible, and has all the "Is addressed to me? YES/NO" logic built into it. Each of these stations has a bunch of minecart tracks leading from it to each and every one of the civ's sites, except the one corresponding to the mountainhome site itself. It just acts as the local termiinal for the locals.
Each remote site has an "Encoder", and a "Get on, Get off" area. A destination is set using the encoder, which then tells the corresponding terminal at the mountain home where the rider is destined. The rider gets on, the encoder sets the destination, and the address carts and the rider cart speed off to the mountain home, full steam.
When they get there, the rider is put into the station's "Idle loop" while it accepts the address cars, then determines if the car is addressed to this station or not. (If it is, and Urist was playing a prank, and put his own city's address in, he gets sent right back home.) If it is not (which it shouldnt be!) he gets shuttled to the next station, and the destination encoding carts get sent to the next station. Urist arrives at the next station, gets put into the idle-loop while his destination is processed and evaluated-- rinse repeat-- until the destination station is reached. (He has still not physically left the mountain home site yet. He's just been getting shuttled through the large central transit hub complex) Once there, instead of being passed on again, he gets sent down the connecting path from the mountain home to that city, as to the address carts.
Putting boulders in the cart or not can be used to encode binary states onto the address carts, and still have a means of determining that the cart has arrived. Only the encoding system fills carts, and only the final destination empties carts. The evaluation of weather a cart is destined for a station or not is done by measuring the weight of the cart. Since all the carts are of the same metal type, all empty carts weigh the same amount, so we can set that weight as the 0 state, and all other weights as the 1 state. a "did not arrive" is an error state. each station needs all of the address carts to arrive before it can determine if Urist should disembark or not. So, it has him circle in the idle loop until all the address carts arrive, get parked in the evaluation stopoffs, and are checked. Once the check is done, Urist is either disembarked, or passed to the next station, along with the address carts.
By having an "Abstracted" loop at the most equidistant city, we keep transit distance as close to the "mathematical average distance between cities". A direct connection from say, SiteA and SiteB migh be faster, especially if A and B are back to back next to each other-- However, that again would require the more sophisticated computer system at each site to handle the addressing and routing.
The alternative to routing to a transit hub city, or using a branching star topology, is to have exactly 2 links between each and every site, and instead of an abstracted loop all compressed into a single site-- have one actual loop that is all jaggy connected all sites together. Now Urist might well ride all over Armok's Bloody Earth just to go see grandma, perhaps spending MONTHS on the minecart.
So, the benefit to cost comes out like this:
Branching Star: Assures best possible route taken from any arbitrary source to any arbitrary destination in the network-- But requires a monster dwarfputer in the basement of every site to pull it off.
Transit hub with abstracted tokenring: Distance traveled bewteen any two cities is kept pretty static, with only a slight increase in distance traveled by going through the transit loop. Keeps the complexity of the dwarfputer to human-managable limits-- But has the downside that the shortest trip possible is slightly longer than a direct connection between the two most distant cities (From each other).
Pure tokenring: Simple input and output, very little dwarfputing needed, but the distance that the rider has to travel can range from very short to being the equivalent of Visiting Every City Urist Did Not Want To See First before getting there.
Star Toplogy without any routing: Requires Urist to know which stations he needs to pass through to get to his city, and go to the appropriate terminals in each city he stops at and get on the next cart himself, each and every time. No automation. Fastest way to get there is assured, no dwarfputer at all, but tedious as hell.