Read this before accusing the library or image archives of being fake
This topic contains 4 replies, has 2 voices, and was last updated by Ray 3 months, 2 weeks ago.
November 6, 2018 at 6:21 am #31352
If you accuse the library of being fake, you are also required to accuse Minecraft’s terrain generation of being fake. Why? Because the mechanisms involved are the same.
Minecraft has a seed, which it uses to specify its terrain generation according to applied constraints. Using the same seed for a different world causes the game to use the same specifications when generating the world, which results in the same world every time (assuming the same version of the game is used, i.e. the applied constraints are the same).
The library also has a seed, but it’s carefully wrapped up in the story elements of the Library of Babel, using a location designated by a hexagon name, wall number, shelf number, volume number, and finally a page number. This location is converted into a value, which the library then applies constraints to (the algorithm). This means that if you go to any location, whether you specify it yourself or have it randomly generated, you will get a specific output from the library, a page that it will return.
The library doesn’t change because the algorithm doesn’t change. Just as if I perform the equation 1+2, I always get 3, the library isn’t going to give you anything other than a specific page (equivalent to the 3 of the example) for a specific user input, since it will always take that input (we’ll pretend this is the 1 of the example), and apply the same constraints (we’ll pretend this is the +2 of the example). Because the +2 is there, and being added to our input (you can write this as X + 2 = Y, where X is your input and Y is your output), you can always expect to get 3 when you enter 1.
In Minecraft, if you could find a specific chunk in the game, it may be possible to, using the mechanics Minecraft uses for terrain generation, find seeds that will create that specific chunk. This is exactly what the library search function is doing.
If we go back to a simple mathematical algorithm for an easier-to-grasp library, let’s have user input be represented by X, and Y be the output the user gets back. Our algorithm will be Y = X * 2. This will give us the following results:
for X = 1, Y = 2
for X = 2, Y = 4
for X = 3, Y = 6
for X = 4, Y = 8
for X = 5, Y = 10
Now, let’s say I want to take the output, and use it to figure out what the input is. Turns out, this can be done with basic algebra. Since Y = X * 2, we can divide both sides by two to get the equation Y / 2 = X. So let’s take some possible outputs:
for Y = 2, X = 1
for Y = 4, X = 2
for Y = 6, X = 3
for Y = 8, X = 4
for Y = 10, X = 5
If you compare these to what we got entering an input, they quite obviously match up. That’s all the search function does. It takes a specific page, puts it through a reverse-engineering of the algorithm used to generate the library, and returns the seed (the location) that would return that page as an output.
Most contentions about the search function pertain to the fact that the search results appear “man-made.” This is a concern voiced primarily due to a misunderstanding of what the search function is actually doing. Because the algorithm generates full pages at specific locations, it cannot search a single String without having a full page. Because most user searchers aren’t a full page, the library takes it into its own hands to make a full page. For random characters, the program receives the String you input, and uses a random number generator to add characters until the page is full. For random English words, it’s the same thing, but your String is instead surrounded by words randomly selected from an internal catalog of words to make a full page (and no, the fact that gibberish still works in the search doesn’t debunk anything, that in no way interferes with what it’s doing). For the exact search, it adds nothing but the String and a bunch of spaces to fill the page.
The search function also has some gimmicks about how it handles your query. Either the first, earliest, or all results will tend to have your query at the start (exact search specifically), or in the very middle. This is due to quirks in how the random material surrounding your search query is generated, which currently isn’t truly random.
Exact pages exist in duplicates across the library. I forget how many for each page, but the library is essentially built so that its algorithm loops after you reach big enough seeds.
I firmly believe that most skepticism of the library’s legitimacy is poorly founded, more often coming from a lack of research into or understanding of the library’s mechanisms than from a true problem with how the library supposedly works. These criticisms keep popping up, primarily here, but also occasionally elsewhere. It’s gotten to the point where there’s an 8 page thread where every skeptical user and their dog has decided to chip in with their enlightened exposé of the grand conspiracy behind the site, despite the fact that every contention has been raised and answered dozens of times. This post can’t even hope to be comprehensive, as there are so many pointless objections that have been raised and answered over time, but hopefully I’ve covered the hot topics sufficiently.
Also, as an aside, while it’s perfectly plausible for an algorithm to be faked, so that it’s instead just a randomly generated page that is then stored, I’d like you to answer a challenge. What would be the site owner’s motivation? You’re essentially accusing them of doing something very expensive that could be done very cheaply using an algorithm. By all accounts, that’s completely unreasonable, to the extent that it should be quite obvious that there isn’t a hoax to reveal.
For people seriously interested in the topic of making something like this, I would look into cryptology, generation by seed, and pseudoRNG, as those are the subjects involved in making the library.November 6, 2018 at 7:54 am #31353
Your conclusion summed it up nicely, from the time I’ve spent here. Everyone I’ve talked with who doesn’t understand the Library just doesn’t have the understanding from a programming or mathematical perspective.
I think the explanation was handled pretty well. I especially like your example of illustrating the reversible PRNG by using multiplication and division. At its core, that’s precisely what the Library is doing (and is why search results are so quickly generated), just with a few more steps involved. Nice job!November 6, 2018 at 1:51 pm #31356
You can write pages about this, and yet no one can answer why m-ssiah was blocked! Strange to say the least!November 6, 2018 at 6:25 pm #31360
The guy you’re referring to was just a vulgar troll. He actually contributed in some threads at first, but then just decided to degrade others using language like a child who just discovered a bunch of “bad words” and wanted to use them at every given moment.November 8, 2018 at 3:52 am #31373
I had noted that, often, replies to criticism of the library would be seemingly ignored with partial repeats of some of the same criticism. This gave me a sense that the critics were likely not understanding the replies since, if they did, they would more likely have adjusted their original points to narrow the scope of the contention. Since the algorithm in particular is brought up a lot in these posts, I figured it would be best to re-imagine the algorithm in a form recognizable to practically anyone who has taken high school algebra, a linear function. While quite general, it makes approaching the concept of PRNG far more digestible, particularly since many people who stop by could easily have no serious background in this area at all.