En matemáticas , el logaritmo binario ( log 2 n ) es la potencia a la que se debe elevar el número 2 para obtener el valor n . Es decir, para cualquier número real x ,
Por ejemplo, el logaritmo binario de 1 es 0 , el logaritmo binario de 2 es 1 , el logaritmo binario de 4 es 2 y el logaritmo binario de 32 es 5 .
El logaritmo binario es el logaritmo en base 2 y es la función inversa de la función potencia de dos . Además de log 2 , una notación alternativa para el logaritmo binario es lb (la notación preferida por ISO 31-11 e ISO 80000-2 ).
Históricamente, la primera aplicación de los logaritmos binarios fue en la teoría musical , por Leonhard Euler : el logaritmo binario de una relación de frecuencias de dos tonos musicales da el número de octavas en las que difieren los tonos. Los logaritmos binarios se pueden utilizar para calcular la longitud de la representación de un número en el sistema de numeración binario , o el número de bits necesarios para codificar un mensaje en la teoría de la información . En informática , cuentan el número de pasos necesarios para la búsqueda binaria y algoritmos relacionados. Otras áreas en las que se utiliza con frecuencia el logaritmo binario incluyen la combinatoria , la bioinformática , el diseño de torneos deportivos y la fotografía .
Los logaritmos binarios están incluidos en las funciones matemáticas estándar de C y otros paquetes de software matemático.
Las potencias de dos se conocen desde la antigüedad; por ejemplo, aparecen en los Elementos de Euclides , Props. IX.32 (sobre la factorización de potencias de dos) y IX.36 (mitad del teorema de Euclides-Euler , sobre la estructura de los números perfectos pares ). Y el logaritmo binario de una potencia de dos es simplemente su posición en la secuencia ordenada de potencias de dos. Sobre esta base, a Michael Stifel se le atribuye la publicación de la primera tabla conocida de logaritmos binarios en 1544. Su libro Arithmetica Integra contiene varias tablas que muestran los números enteros con sus correspondientes potencias de dos. Invirtiendo las filas de estas tablas se pueden interpretar como tablas de logaritmos binarios. [1] [2]
Antes que Stifel, se le atribuye al matemático jainista del siglo VIII Virasena el precursor del logaritmo binario. El concepto de ardhacheda de Virasena se ha definido como el número de veces que un número dado puede dividirse exactamente por dos. Esta definición da lugar a una función que coincide con el logaritmo binario en las potencias de dos, [3] pero es diferente para otros números enteros, dando el orden 2-ádico en lugar del logaritmo. [4]
La forma moderna de un logaritmo binario, aplicable a cualquier número (no solo a potencias de dos), fue considerada explícitamente por Leonhard Euler en 1739. Euler estableció la aplicación de los logaritmos binarios a la teoría musical, mucho antes de que se conocieran sus aplicaciones en la teoría de la información y la informática. Como parte de su trabajo en esta área, Euler publicó una tabla de logaritmos binarios de los números enteros del 1 al 8, con una precisión de siete dígitos decimales. [5] [6]
La función logaritmo binario puede definirse como la función inversa elevada a la segunda potencia , que es una función estrictamente creciente sobre los números reales positivos y, por lo tanto, tiene una única inversa. [7] Alternativamente, puede definirse como ln n /ln 2 , donde ln es el logaritmo natural , definido en cualquiera de sus formas estándar. El uso del logaritmo complejo en esta definición permite que el logaritmo binario se extienda a los números complejos . [8]
Al igual que otros logaritmos, el logaritmo binario obedece a las siguientes ecuaciones, que pueden utilizarse para simplificar fórmulas que combinan logaritmos binarios con multiplicación o exponenciación: [9]
Para obtener más información, consulte la lista de identidades logarítmicas .
En matemáticas, el logaritmo binario de un número n a menudo se escribe como log 2 n . [10] Sin embargo, se han utilizado o propuesto varias otras notaciones para esta función, especialmente en áreas de aplicación.
Algunos autores escriben el logaritmo binario como lg n , [11] [12] la notación que aparece en The Chicago Manual of Style . [13] Donald Knuth atribuye esta notación a una sugerencia de Edward Reingold , [14] pero su uso tanto en la teoría de la información como en la informática data de antes de que Reingold estuviera activo. [15] [16] El logaritmo binario también se ha escrito como log n con una declaración previa de que la base predeterminada para el logaritmo es 2 . [17] [18] [19] Otra notación que se utiliza a menudo para la misma función (especialmente en la literatura científica alemana) es ld n , [20] [21] [22] del latín logarithmus dualis [20] o logarithmus dyadis . [20] Las normas DIN 1302 , ISO 31-11 e ISO 80000-2 recomiendan otra notación, lb n . De acuerdo con estas normas, lg n no debería utilizarse para el logaritmo binario, ya que está reservado para el logaritmo común log 10 n . [23] [24] [25]
El número de dígitos ( bits ) en la representación binaria de un entero positivo n es la parte integral de 1 + log 2 n , es decir [12]
En teoría de la información, la definición de la cantidad de autoinformación y de entropía de información se expresa a menudo con el logaritmo binario, lo que corresponde a convertir el bit en la unidad fundamental de información . Con estas unidades, el teorema de Shannon-Hartley expresa la capacidad de información de un canal como el logaritmo binario de su relación señal-ruido, más uno. Sin embargo, el logaritmo natural y el nat también se utilizan en notaciones alternativas para estas definiciones. [26]
Aunque el logaritmo natural es más importante que el logaritmo binario en muchas áreas de las matemáticas puras, como la teoría de números y el análisis matemático , [27] el logaritmo binario tiene varias aplicaciones en combinatoria :
El logaritmo binario también aparece frecuentemente en el análisis de algoritmos , [19] no sólo por el uso frecuente de la aritmética de números binarios en algoritmos, sino también porque los logaritmos binarios aparecen en el análisis de algoritmos basados en ramificaciones bidireccionales. [14] Si un problema tiene inicialmente n opciones para su solución, y cada iteración del algoritmo reduce el número de opciones por un factor de dos, entonces el número de iteraciones necesarias para seleccionar una única opción es de nuevo la parte integral de log 2 n . Esta idea se utiliza en el análisis de varios algoritmos y estructuras de datos . Por ejemplo, en la búsqueda binaria , el tamaño del problema a resolver se reduce a la mitad con cada iteración, y por lo tanto se necesitan aproximadamente log 2 n iteraciones para obtener una solución para un problema de tamaño n . [34] De forma similar, un árbol de búsqueda binaria perfectamente equilibrado que contiene n elementos tiene una altura log 2 ( n + 1) − 1 . [35]
El tiempo de ejecución de un algoritmo se expresa generalmente en notación O grande , que se utiliza para simplificar expresiones omitiendo sus factores constantes y términos de orden inferior. Debido a que los logaritmos en diferentes bases difieren entre sí solo por un factor constante, también se puede decir que los algoritmos que se ejecutan en tiempo O (log 2 n ) se ejecutan, por ejemplo, en tiempo O (log 13 n ) . Por lo tanto, la base del logaritmo en expresiones como O (log n ) u O ( n log n ) no es importante y se puede omitir. [11] [36] Sin embargo, para los logaritmos que aparecen en el exponente de un límite de tiempo, la base del logaritmo no se puede omitir. Por ejemplo, O (2 log 2 n ) no es lo mismo que O (2 ln n ) porque el primero es igual a O ( n ) y el segundo a O ( n 0.6931... ) .
Los algoritmos con un tiempo de ejecución O ( n log n ) a veces se denominan linealímicos . [37] Algunos ejemplos de algoritmos con un tiempo de ejecución O (log n ) o O ( n log n ) son:
Los logaritmos binarios también ocurren en los exponentes de los límites de tiempo para algunos algoritmos de divide y vencerás , como el algoritmo de Karatsuba para multiplicar números de n bits en tiempo O ( n log 2 3 ) , [42] y el algoritmo de Strassen para multiplicar matrices n × n en tiempo O ( n log 2 7 ) . [43] La ocurrencia de logaritmos binarios en estos tiempos de ejecución puede explicarse por referencia al teorema maestro para recurrencias de divide y vencerás .
En bioinformática , los microarrays se utilizan para medir la intensidad con la que se expresan diferentes genes en una muestra de material biológico. Las diferentes tasas de expresión de un gen se comparan a menudo utilizando el logaritmo binario de la relación de las tasas de expresión: la relación logarítmica de dos tasas de expresión se define como el logaritmo binario de la relación de las dos tasas. Los logaritmos binarios permiten una comparación conveniente de las tasas de expresión: una tasa de expresión duplicada se puede describir con una relación logarítmica de 1 , una tasa de expresión reducida a la mitad se puede describir con una relación logarítmica de −1 y una tasa de expresión sin cambios se puede describir con una relación logarítmica de cero, por ejemplo. [44]
Los puntos de datos obtenidos de esta manera a menudo se visualizan como un diagrama de dispersión en el que uno o ambos ejes de coordenadas son logaritmos binarios de relaciones de intensidad, o en visualizaciones como el diagrama MA y el diagrama RA que rotan y escalan estos diagramas de dispersión de relaciones logarítmicas. [45]
En teoría musical , el intervalo o diferencia perceptual entre dos tonos se determina por la relación de sus frecuencias. Los intervalos que provienen de razones de números racionales con numeradores y denominadores pequeños se perciben como particularmente eufónicos. El más simple e importante de estos intervalos es la octava , una relación de frecuencias de 2:1 . El número de octavas en las que difieren dos tonos es el logaritmo binario de su relación de frecuencias. [46]
Para estudiar los sistemas de afinación y otros aspectos de la teoría musical que requieren distinciones más finas entre tonos, es útil tener una medida del tamaño de un intervalo que sea más fina que una octava y que sea aditiva (como lo son los logaritmos) en lugar de multiplicativa (como lo son las razones de frecuencia). Es decir, si los tonos x , y y z forman una secuencia ascendente de tonos, entonces la medida del intervalo de x a y más la medida del intervalo de y a z debería ser igual a la medida del intervalo de x a z . Tal medida está dada por el cent , que divide la octava en 1200 intervalos iguales ( 12 semitonos de 100 cents cada uno). Matemáticamente, dados los tonos con frecuencias f 1 y f 2 , el número de cents en el intervalo de f 1 a f 2 es [46]
La milioctava se define de la misma manera, pero con un multiplicador de 1000 en lugar de 1200. [47 ]
En los juegos y deportes competitivos que involucran a dos jugadores o equipos en cada juego o partido, el logaritmo binario indica el número de rondas necesarias en un torneo de eliminación simple requerido para determinar un ganador. Por ejemplo, un torneo de 4 jugadores requiere log 2 4 = 2 rondas para determinar el ganador, un torneo de 32 equipos requiere log 2 32 = 5 rondas, etc. En este caso, para n jugadores/equipos donde n no es una potencia de 2, log 2 n se redondea hacia arriba ya que es necesario tener al menos una ronda en la que no jueguen todos los competidores restantes. Por ejemplo, log 2 6 es aproximadamente 2,585 , que se redondea a 3 , lo que indica que un torneo de 6 equipos requiere 3 rondas (ya sea que dos equipos se queden fuera de la primera ronda o que un equipo se quede fuera de la segunda ronda). La misma cantidad de rondas también es necesaria para determinar un ganador claro en un torneo de sistema suizo . [48]
En fotografía , los valores de exposición se miden en términos del logaritmo binario de la cantidad de luz que llega a la película o al sensor, de acuerdo con la ley de Weber-Fechner que describe una respuesta logarítmica del sistema visual humano a la luz. Un solo paso de exposición es una unidad en una escala logarítmica de base 2. [49] [50] Más precisamente, el valor de exposición de una fotografía se define como
donde N es el número f que mide la apertura de la lente durante la exposición, y t es el número de segundos de exposición. [51]
Los logaritmos binarios (expresados como puntos) también se utilizan en densitometría , para expresar el rango dinámico de materiales sensibles a la luz o sensores digitales. [52]
Una forma sencilla de calcular log 2 n en calculadoras que no tienen una función log 2 es usar las funciones de logaritmo natural ( ln ) o logaritmo común ( log o log 10 ), que se encuentran en la mayoría de las calculadoras científicas . Para cambiar la base del logaritmo de e o 10 a 2 , se pueden usar las fórmulas : [50] [53]
o aproximadamente
El logaritmo binario se puede convertir en una función de números enteros y de números enteros redondeándolo hacia arriba o hacia abajo. Estas dos formas de logaritmo binario entero están relacionadas por esta fórmula:
La definición se puede ampliar definiendo . Extendida de esta manera, esta función está relacionada con el número de ceros iniciales de la representación binaria sin signo de 32 bits de x , nlz( x ) .
El logaritmo binario entero se puede interpretar como el índice basado en cero del bit 1 más significativo en la entrada. En este sentido, es el complemento de la operación de búsqueda del primer conjunto , que encuentra el índice del bit 1 menos significativo . Muchas plataformas de hardware incluyen soporte para encontrar el número de ceros iniciales, u operaciones equivalentes, que se pueden utilizar para encontrar rápidamente el logaritmo binario. Las funciones fls
and flsl
en el núcleo Linux [55] y en algunas versiones de la biblioteca de software libc también calculan el logaritmo binario (redondeado a un entero, más uno).
Para un número real positivo general , el logaritmo binario puede calcularse en dos partes. [56] Primero, se calcula la parte entera ( llamada característica del logaritmo). Esto reduce el problema a uno donde el argumento del logaritmo está en un rango restringido, el intervalo [1, 2) , simplificando el segundo paso de calcular la parte fraccionaria (la mantisa del logaritmo). Para cualquier x > 0 , existe un entero único n tal que 2 n ≤ x < 2 n +1 , o equivalentemente 1 ≤ 2 − n x < 2. Ahora la parte entera del logaritmo es simplemente n , y la parte fraccionaria es log 2 (2 − n x ) . [56] En otras palabras:
Para los números de punto flotante normalizados , la parte entera está dada por el exponente de punto flotante, [57] y para los números enteros se puede determinar realizando una operación de conteo de ceros iniciales . [58]
La parte fraccionaria del resultado es log 2 y y se puede calcular iterativamente, utilizando solo multiplicación y división elementales. [56] El algoritmo para calcular la parte fraccionaria se puede describir en pseudocódigo de la siguiente manera:
El resultado de esto se expresa mediante las siguientes fórmulas recursivas, en las que es el número de cuadraturas requeridas en la i -ésima iteración del algoritmo:
En el caso especial en el que se encuentra que la parte fraccionaria en el paso 1 es cero, se trata de una secuencia finita que termina en algún punto. De lo contrario, es una serie infinita que converge de acuerdo con la prueba de la razón , ya que cada término es estrictamente menor que el anterior (ya que cada m i > 0 ). Para uso práctico, esta serie infinita debe truncarse para llegar a un resultado aproximado. Si la serie se trunca después del i -ésimo término, entonces el error en el resultado es menor que 2 −( m 1 + m 2 + ⋯ + m i ) . [56]
La log2
función está incluida en las funciones matemáticas estándar de C. La versión predeterminada de esta función acepta argumentos de precisión doble , pero sus variantes permiten que el argumento sea de precisión simple o que sea un doble largo . [59] En entornos informáticos que admiten números complejos y conversión de tipos implícita, como MATLAB, se permite que el argumento de la log2
función sea un número negativo , que devuelve un número complejo. [60]
IMLOG2
función para logaritmos binarios complejos: véase Bourg, David M. (2006), Excel Scientific and Engineering Cookbook, O'Reilly Media, pág. 232, ISBN 978-0-596-55317-3.En lo sucesivo, y a menos que se indique lo contrario, la notación log x siempre representa el logaritmo en base 2 de x..
que se especifique lo contrario, tomaremos todos los logaritmos en base 2..
Uno de los aspectos interesantes y a veces incluso sorprendentes del análisis de estructuras de datos y algoritmos es la presencia omnipresente de logaritmos... Como es costumbre en la literatura informática, omitimos escribir la base
b
del logaritmo cuando
b
= 2
.
el único logaritmo de importancia es el logaritmo natural..