Latex bug

Reageer
Berichten: 112

Latex bug

Ik vond een rare bug, eerder op dit forum zag ik in latex de volgende uitdrukking staan
\( \frac{8-x^2}{\sqrt{8-x^2}} \)
, maar ik had dat niet zelf gepost. Wanneer ik dan later zelf een integraal met latex probeerde weer te geven gaf hij mij in de plaats deze rare breuk, terwijl mijn code duidelijk iets ander zei.

Hier is een plaatje ter verduidelijking:
Screen Shot 2015-08-06 at 15.00.39.png
Screen Shot 2015-08-06 at 15.00.39.png (72.66 KiB) 2522 keer bekeken
Verder, toen ik dit probleem opmerkte en ik veranderde bijvoorbeeld een i naar j in mijn latex code dan gaf hij wel de correct uitdrukking. Maar als ik het terug veranderde naar de oorspronkelijke code gaf hij weer die rare breuk.

Komt dit probleem meer voor?

Gebruikersavatar
Berichten: 17.653

Re: Latex bug

Mijn kennis van de LaTeX implementatie op het forum is nogal roestig, maar ik meen me te herinneren dat er een hash van de code wordt gemaakt en die wordt gebruikt voor de bestandsnaam van de afbeelding die getoond wordt. Dit is gedaan met de gedachte dat je zo niet voor iedere formule een nieuwe afbeelding hoeft te maken (denk bijvoorbeeld aan mensen die een formule citeren of een regelmatig terugkerende formule).
We hebben nu ongeveer 9-10 jaar lang LaTeX in gebruik, en ik denk dat we daardoor nu de eerste "collision" te pakken hebben: 2 codes die tot dezelfde hash leiden. Dat risico zal mettertijd toenemen (hoe meer formules gepost worden, hoe groter de kans op een collision).
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

Gebruikersavatar
Berichten: 778

Re: Latex bug

Ah! Maar nu snap ik ook waarom mijn formule (ik was het die de wortelbreuk typte) bij weergave van het voorbeeld, zo af en to een compleet andere formule liet zien, die volgens mij niets te maken had met die 8-x^2 etc. Dat was een formule met een
\( W \)
en een
\( \int \)
en zo.
Pas nadat ik zo hier en daar een spatie had getypt, verscheen de juiste weergave. En ik maar denken dat er in de latexcodetaal ook spaties hadden moeten worden opgenomen.

Gebruikersavatar
Berichten: 17.653

Re: Latex bug

Even voor de goede orde: het is maar een aanname op basis van wat roestige kennis hè. Misschien ligt het probleem wel heel ergens anders. ;)
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

Berichten: 112

Re: Latex bug

Back2Basics schreef: Ah! Maar nu snap ik ook waarom mijn formule (ik was het die de wortelbreuk typte) bij weergave van het voorbeeld, zo af en to een compleet andere formule liet zien, die volgens mij niets te maken had met die 8-x^2 etc. Dat was een formule met een
\( W \)
en een
\( \int \)
en zo.
Pas nadat ik zo hier en daar een spatie had getypt, verscheen de juiste weergave. En ik maar denken dat er in de latexcodetaal ook spaties hadden moeten worden opgenomen.
Ja dat was dus mijn formule waarschijnlijk. Een gewone latex compiler zal dit uiteraard nooit voor hebben.
 
Ger schreef: Even voor de goede orde: het is maar een aanname op basis van wat roestige kennis hè. Misschien ligt het probleem wel heel ergens anders. ;)
Het lijkt toch alleszins in de buurt te komen. Dus die hashes worden volledig willekeurig bepaald? Want die twee stukken code waren volledig verschillend.

Gebruikersavatar
Berichten: 17.653

Re: Latex bug

Nee, niet willekeurig. Eenzelfde hashfunctie (MD5 bijvoorbeeld) van dezelfde data levert altijd dezelfde output. Echter kunnen 2 totaal verschillende datasets dezelfde hash-output hebben. Volgens mij wordt in dit geval MD5 gebruikt; wat een 32-cijferig hexadecimaal getal resulteert. Het aantal unieke 32-cijferige hexadecimale getallen is natuurlijk eindig (wel ontiegelijk verschrikkelijk veel, maar goed), terwijl het aantal unieke datasets oneindig is. Dat kan dus resulteren in collissions naarmate het aantal opgeslagen hashes toeneemt.
 
Beetje betere uitleg: http://www.npowetenschap.nl/nieuws/artikelen/2013/december/Wat-is-een-hash-.html
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

Berichten: 112

Re: Latex bug

Ger schreef:  Het aantal unieke 32-cijferige hexadecimale getallen is natuurlijk eindig (wel ontiegelijk verschrikkelijk veel, maar goed)
 
Met zo een grote aantallen begin ik er toch wel aan te twijfelen.

Als ik het correct heb dan zijn er 1632 mogelijke hashes.
Zelfs als er op het forum consequent elke dag voor 10 jaar lang een miljoen van die latex afbeeldingen werden gemaakt, dan zou er nog maar
10^6*10*365*16-32 = 1.07*10-29 deel van alle mogelijke hashes gevuld zijn.
Dus dat de kans op een collision merkbaar zou stijgen binnen enkele jaren lijkt me vergezocht.
Dan lijkt mij ook dat de kans dat de hashes van die codes net overeenkomen wel ontzettend klein.
Maar ik kan me vergissen uiteraard.

Gebruikersavatar
Berichten: 2.906

Re: Latex bug

Inderdaad, met een 32-cijferige hexadecimale hash is het volslagen ondenkbaar dat je toevallig een collision tegen zou komen.
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Gebruikersavatar
Berichten: 2.906

Re: Latex bug

Overigens komt die uitdrukking met dat quotiënt uit dit recente topic:
 
http://www.wetenschapsforum.nl/index.php/topic/196261-quotientregel-toepassen/page-2
 
Het zou dus nog veel toevalliger zijn dat je een collision vindt tussen twee formules die in dezelfde periode geplaatst zijn.
 
Misschien dat er iets mis is gegaan omdat beide formules exact tegelijk geplaatst zijn bijvoorbeeld?
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Gebruikersavatar
Berichten: 5.609

Re: Latex bug

Math-E-Mad-X schreef: Inderdaad, met een 32-cijferige hexadecimale hash is het volslagen ondenkbaar dat je toevallig een collision tegen zou komen.
 
Met een 32-cijferige hash, duurt het ongeveer
\(2^{32/2}\)
hashes voor je 50% kans hebt op een collision. Dit is onverwacht omwille van het Birthday-problem: https://en.wikipedia.org/wiki/Birthday_problem
 
Dus, na ongeveer 
\(65536\)
formules is de kans op een collision fifty fifty.  ;)
Ik weet niet hoeveel formules er al op dit forum staan, maar de grootte-orde lijkt me alvast juist.
 
De naam van deze manier van collision zoeken noemt de Birthday attack: https://en.wikipedia.org/wiki/Birthday_attack
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Berichten: 112

Re: Latex bug

317070 schreef:  
Met een 32-cijferige hash, duurt het ongeveer
\(2^{32/2}\)
hashes voor je 50% kans hebt op een collision. 
 
Maar de cijfers zijn hexadecimaal, dus is het dan niet
\( 16^{32/2} \approx 1,8 \cdot 10^{19}\)
?
+ het was geen collision met zomaar één van de vele formules die ooit op het forum zijn verschenen, maar een collision tussen twee formules die dezelfde dag werden gepost.
 
Math-E-Mad-X schreef: Misschien dat er iets mis is gegaan omdat beide formules exact tegelijk geplaatst zijn bijvoorbeeld?
 
Ik keek net en merkte dat die posts ongeveer een halfuurtje uiteen lagen.

Maar ik was ondertussen ook met andere dingen bezig dus het kan goed zijn dat ik een halfuurtje eerder een voorbeeld van mijn post maakte, rond het tijdstip dat back2basic zijn formule poste.

Gebruikersavatar
Berichten: 2.906

Re: Latex bug

317070 schreef:  
Met een 32-cijferige hash, duurt het ongeveer
\(2^{32/2}\)
hashes voor je 50% kans hebt op een collision. Dit is onverwacht omwille van het Birthday-problem: https://en.wikipedia.org/wiki/Birthday_problem
 
 
Het gaat om 32 hexadecimale getallen, oftewel een hash van 128 bits. Je hebt dus niet  
\(2^{32/2}\)
maar 
\(2^{128/2}\)
hashes nodig voor je een 50% kans hebt.[/size]
 
Dat maakt het toch iets onwaarschijnlijker  ;) 
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Reageer