![]() |
No s'ha de confondre amb Informe circular o Raonament circular. |
Una referència circular consta d'una sèrie de referències on l’últim objecte fa referència al primer, donant lloc a un bucle tancat. El concepte matemàtic subjacent és un cicle de teoria de grafs.
Explicació
Si definim com , el fet que A fa referència a B. Sí plantegem: , llavors tenim una referència circular, atès que hem definit: , que implica per transitivitat . Aquesta situació planteja un problema ja significa que no es pot tenir A sense conèixer A.
La Fal·làcia de referència circular ha tingut lloc en moltes ocasions al llarg de la història. Isla Catalana és una petita illa en territori de Mèxic al Golf de Califòrnia enfront de les costes de l'estat de Baixa Califòrnia Sud. L'illa està situada al sud del Golf de Califòrnia i es troba a 25 km de la península de Baixa Califòrnia. Originalment es deia Isla Catalana,[1][2] però a un cert moment (per error o per mala fe) als arxius dels EUA apareix com Isla Catalina,[3][4] a partir de llavors, totes les referències que han mirat els arxius dels EUA li han dit Isla Catalina, aquestes referències s'han convertit en circulars ja que es citen les unes a les altres, i de fet, a Google Maps encara apareix amb aquest nom.[4] Sortosament les autoritats mexicanes han fet prevaldre el nom original i el nom oficial a Mèxic és l'original Isla Catalana.[5][6]
No s’ha de confondre una referència circular amb la fal·làcia lògica d’una argumentació circular. Tot i que sovint una referència circular no és útil i no revela cap informació, no és necessàriament així, com ara dues entrades d’un índex d'un llibre que es refereixen entre si, hi ha casos en que una referència circular és util:
De fet, es pot argumentar que l’autoreferència és una conseqüència necessària de la Llei de no contradicció d’Aristòtil, que és un axioma filosòfic fonamental. Segons aquest principi, sense autoreferències, la lògica i les matemàtiques esdevenen impossibles o, com a mínim, manquen d’utilitat.[7]
De vegades, una xarxa comercial planificada incorrectament pot conduir a una referència circular. Per exemple:
L’Alícia ha de tornar la seva rentadora, és defectuosa i necessita que l'arreglin. Truca a l'empresa i rep instruccions d'en Bob del "Servei d'atenció al client" de que ho sol·liciti a la Carol de "Devolucions i canvis". La Carol, al seu torn li diu a l’Alícia que ho demani al David de "Reclamacions". I en David li diu a l’Alícia que li demani a en Bob del "Servei d'atenció al client", amb el que es crea un cercle viciós. Un cas
Tot el conjunt de referències és inútil perquè cap d’elles pot satisfer la sol·licitud de l’Alicia ; l'Alicia segueix un bucle complet, on cada referència la condueix a una altra persona i, finalment, se la torna a enviar a la primera persona.
Les referències circulars poden aparèixer en la programació d’ordinadors quan un fragment de codi requereix el resultat d’un altre, però aquest codi necessita el resultat del primer. Per exemple, les dues funcions, "posn" i "plus1" del programa Python següent, inclouen una referència circular:
def posn(k: int) -> int:
if k < 0:
return plus1(k)
return k
def plus1(n: int) -> int:
return posn(n + 1)
>>> posn(-1)
0
Les referències circulars com l'exemple anterior poden retornar resultats vàlids si tenen una condició final. Si no hi ha cap condició final, una referència circular condueix a una condició coneguda com interbloqueig.
A la norma ISO, les restriccions d’integritat circular SQL s’admeten implícitament dins d’una sola taula. Entre múltiples taules, es permeten restriccions circulars (per exemple, claus externes) definint les restriccions com a diferibles (vegeu CREAR TABLA per a PostgreSQL i Exemples de restriccions DEFERRABLE per a Oracle). En aquest cas, la restricció es comprova al final de la transacció no en el moment en què s'executa la sentència DML. Per actualitzar una referència circular, es poden emetre dues declaracions en una única transacció que satisfaci ambdues referències un cop s'hagi compromès la transacció.
Les referències circulars també es produeixen en els fulls de càlcul quan dues cel·les requereixen el resultat de l’altra. Per exemple, si el valor de la cel·la A1 s’obté afegint 5 al valor de la cel·la B1 i el valor de la cel·la B1 s’obté afegint 3 al valor de la cel·la A1, no es poden calcular valors. (Fins i tot si les especificacions són A1: = B1 + 5 i B1: = A1-5, encara hi ha una referència circular. No ajuda que, per exemple, A1 = 3 i B1 = -2 satisfacin ambdues fórmules, ja que hi ha infinitament molts altres valors possibles d’A1 i B1 que poden satisfer ambdues instàncies.)
La referència circular en els fulls de càlcul pot ser una tècnica molt útil per resoldre equacions implícites com l'equació de Colebrook i algunes altres, que d'una altra manera podrien requerir tediosos algorismes de Newton-Raphson en VBA o l'ús de macros.[8]
Cal distingir els processos que contenen una referència circular entre els que són incompatibles i els que són un càlcul iteratiu amb un resultat final. És possible que aquests últims fallin en fulls de càlcul no preparats per gestionar-los, però, no obstant això, són lògicament vàlids.[7]