Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Serapis

#151
Ordenando carpetas, me encontré otra carpeta mal renombrada (y por tanto fuera de orden) donde tengo otro algoritmo que hice a comienzo de los 90, emplea una heurística muy diferente pero muy simple del que tiene como virtud los pocos nodos que precisa visitar. Es decir consigue un resultado muy rápidamente, por ejemplo para 20 nodos, apenas tarda 0'05-0'09sg. y visita solo unos cientos de nodos. Para 100 nodos apenas 0'3sg. y para 1000nodos solo 45sg. (en mi equipo que es viejo y no muy potente).

Ayer me puse a repasarlo para asegurarme que lo tenía completo y funcionaba bien, pues no dejé comentarios al respecto, y mientras lo migraba NET  (lo tenía en un viejo lenguaje) y para hacerlo más útil, lo fijé para usar un mapa finito (un área de 512x512), para crear los puntos aleatoriamente y poder dibujarlos (opcionalmente) en el mismo mapa sobre la marcha, a medida que encuentra rutas más óptimas.

Lo interesante de este algoritmo, es que puede ser usado como un primer paso para obtener una respuesta rápida, desde la cual partir con otro algoritmo más 'sesudo' (y más lento o consumidor de recursos), que es más adecuado para alcanzar un valor mucho más óptimo (repito cuando el número de nodos es mayor de unas pocas decenas).

La descripción de esta heurística es muy simple, se trata de ver si el intercambio entre dos nodos genera una ruta más óptima, en tal caso, se realiza el cambio.
Hay que proceder sistemáticamente no al azar, para que alcance en algún momento un punto de 'bloqueo' donde ya no se localizan mejoras con intercambios, momento en que  el algoritmo finaliza.
Un medio de optimizar las comparaciones es precalcular la ruta inicial (en general si no se ordenan 'geográficamente', el orden es el que subyace en el listado.
Así la idea de comparar el intercambio entre dos nodos asume la siguiente noción:


suma = recorridoinicial
...
...
...
buleano = Funcion CompararBY(entero A, entero distancia, inout entero suma, inout entero B, inout entero Y)
   suma1 = ABC + XYZ
   suma2 = AYC + XBZ

   Si (suma2 < suma1)
       suma = (suma - suma1 + suma2) //actualizar suma
       devolver TRUE  //al retorno se hace el intercambio cuando devuelve true.
   fin si
fin funcion

Nota que los nodos que se comparan son B e Y, así ABC es la ruta 'A a B' + 'B a C'.
Nota también que los intercambis, para ser exhaustivos, deben empezar a una distancia (entre B e Y) de numnodos/2, cuando a esa distancia no haya intercambios, se reduce la distancia hasta 2.

El intercambio de distancia 1, es muy similar, pero requiere aplicarse aparte, ya que si XYZ solapan en parte ABC (lo que sucede con distancia 1) BC y XY están tomando una distancia que ahora existe pero que de intercambiarse se rompe... luego no es adecuado hacer una comparación de sumas con solape de nodos. Puede resolverse a base de complicar el algoritmo con cada nodo a visitar, que lo hace subóptimo, en cambio si tratamos la distancia 1 en un bucle aparte, no hay esa pérdida de rendimiento en lógica extra ni hay que complicarse en resolver esa lógica extra.
El algoritmo principal sería:

//Heuristica de Intercambios de dos nodos:
suma = recorridoinicial  //ABCDEFGH...

Hacer
   intercambios = false
   bucle para distancia desde (numnodos/2) hasta 2 retrocediendo de 1 en 1        
       Hacer
           cambios = false
           bucle para k desde 0 a numNodos-1          
               Si CompararBY(k, distancia, suma, B, Y)= true
                   intercambiar B con Y
                   cambios = true
                   numIntercambios +=1
                   evento Reportar(ruta.tostring, suma, numIntercambios)
               fin si
               numVisitados +=1
           siguiente
           intercambios  = (intercambios or cambios)
       Repetir mientras cambios=True
   siguiente  

   // aquí el bucle para distancia =1            
       Hacer
           cambios = false
           bucle para k desde 0 a numNodos-1          
               Si CompararBC(k, suma, B, C)= true
                   intercambiar B con C
                   cambios = true
                   numIntercambios +=1
                   evento Reportar(ruta.tostring, suma, numIntercambios)
               fin si
               numVisitados +=1
           siguiente
           intercambios  = (intercambios or cambios)
       Repetir mientras cambios=True
Repetir mientras intercambios=TRUE

La función CompararBY es ligeramente diferente de CompararBC, esta última impide solapes entre los nodos que falsifiquen la suma de las distancia.


// Distancia=1, es preciso mantenerse aparte para evitar solapes en la suma de distancias (sin complicar el algoritmo y que ello redunde en lentitud).
buleano = Funcion CompararBC(entero A, inout entero suma, inout entero B, inout entero Y)
   suma1 = AB + CD   // BC = CB (si es el problema del TSP simétrico).
   suma2 = AC + BD   // luego, la suma de estos está retirado

   Si (suma2 < suma1)
       suma = (suma - suma1 + suma2) //actualizar suma
       devolver TRUE  //al retorno se hace el intercambio cuando devuelve true.
   fin si
fin funcion


Las variables, A,B,C, X, Y, Z,  K,D refieren al indice que ocupan en un array, y dichos índices son el indice del array de nodos. Yo uso una (clase) pila (más que nada porque se comparte entre todos los otros algoritmos), para éste, al caso se le ha añadido una propiedad Test (además de Push y Pop), para lectura y escritura no secuencial (algo como Peek y Poke) y con ello permitir el intercambio de índices cuando es aceptado. Ese array contiene pues los índices de la ruta a seguir, luego 'ruta.ToString' es tomar cada indice en el array separado por lo que prefieras una coma, un guión, etc... Si se busca más velocidad, el evento no es requerido, basta enviarlo cuando salga del bucle principal. Igualmente cuando se qiere revisar tiempos, se desactiva el dibujado, aunque el inicial y el final corren dentro del crono (al gusto pueden dejarse fuera).

Dos cuestiones a tener en cuenta son:
- Que el recorrido en el bucle debe ser circular, ya que si hay 20 nodos y A es el 19ª, B tendrá que ser el 0º y C el 1º, y si hay una distancia a aplicar de 8, entonces X será el 7º, Y el 8º y Z el 9º. Es decir el cálculo de índices debe recurrir al módulo de forma constante.
- Que puede hacerse un cálculo mucho más veloz si se mantiene en memoria una tabla con el mapa de las distancias, pero que solo es asequible cuando el número de nodos es tolerable.
Si se operara por ejemplo con 1 millón de nodos, entonces dicha tabla ocuparía en memoria los bytes que ocupen los datos de 1 billón. En tal caso en vez de mantener dicha tabla en memoria es preferible calcular cada vez la distancia ABC y XYZ, que al requerir potencias y raíz cuadrada (operando con la distancia de Euler), contínuamente hacen decaer la velocidad del algoritmo notablemente pero a cambio pueden abordarse problemas de varios miles de nodos (al pasarlo a NET sigue este modelo, en tanto que la versión que tenía en origen mantenía la tabla, pués lo tenía limitado a 100 nodos máximo).

Cuando se opera con una cantidad media de nodos (pongamos 100), lo que se observa es que opera bastante bien todos los nodos que están en el 'extraradio' del mapa, cometiendo en cambio 'torpezas' severas con nodos internos. La razón de esto es que solo ataca el intercambio de 2 nodos (esto es, la ruta de un nodo con sus 2 adyacentes), si el intercambio fuera comparando la distancia de 2 o más nodos (comparar dos nodos serían ABCD y WXYZ), se seguirían consiguiendo mejores resultados, tanto más necesario, cuando el número de nodos es mayor.
Se desprende (observando el mapa con los resultados) que este algoritmo apoyado por otro (tras éste) que operara mejor los nodos próximos entre sí lograría resultados muy óptimos en un tiempo muy rápido.

Es decir, lo más interesante de este algoritmo es que al ser tan rápido, puede ser la primera fase de otro más eficaz en el resultado. Llegar a cierto resultado óptimo, prontamente satisface la posibilidad para otro algoritmo más lento que opere a partir de donde éste lo deja.
De hecho es intuitivo que la programación dinámica puede asumirse como un intento de optimizar este tipo de situaciones.
Tu que sigues el esquema de programación dimámica ya te habrá quedado claro que si para algo como 20 nodos empleas (pongamos por ejemplo), 1-4Gb. de RAM, para uno de 30 nodos, seguramente te subas a 15 o 30Gb. y probablemente no puedas asumir problemas con más de 50 nodos sin sacrificar por algún lado, porque la RAM precisa será inasumible....
Este algoritmo al ser tan simple, el costo en RAM es pecata minuta, básicamente son unos pocos MB. que dependen de la cantidad de nodos y las estructuras asociadas, pués la parte principal como ya te de dicho es un simple array que mantiene los indices de los nodos que amntienen la ruta vigente.

A la noche me edito repaso el escrito y pongo imágenes...

Con pocos nodos (incluso con 20), suele encontrar la solución óptima o muy próxima, cuanto mayor es el número de nodos esa tendencia se pierde.
A la vista (tras dibujar el mapa), es observable que (cuando no consigue la ruta óptima), puede mejorarse fácilmente. Los humanos somos buenos visualmente para lograr heurísticas (difíciles de programar), pero con resultados muy cercanos al óptimo.

En la imagen adjunta, se observa como es mejorable la ruta si fuera del nodo 12 al nodo 2 y del nodo 13 al nodo 16.

El algoritmo de intercambio, se presta a muchas variaciones una que haré el próximo fin de semana, se explica muy bien justamente en la imagen de este ejemplo.
Se tendrá en cuenta para el intercambio, solo la distancia del segmento entre 2 nodos (en vez de los dos segmentos entre 3 nodos. Esto hace que la cantidad de cálculos sea menor, si bien la cantidad de nodos a visitar seguramente sea mucho más numeroso. Es importante implementarlo bien de otro modo se estaría operando con un algoritmo de fuerza bruta.
Al término incluso podría hacerse operar un algoritmo al término del otro, para determinar eficiencia y eficacia.

Cuando el número de nodos crece (por ejemplo, 100), es prácticamente imposible que arroje el resultado óptimo, como puede verse en esta imagen.


Aquí un ejemplo para 1000 nodos, la imagen inicial con un costo total de 261.867, es reducida al final a solo 35.909, y para ello necesita visitar 9.105.000 nodos y realiza 5.506 intercambios.
La ruta inicial: 0,1,2,3,4,5,6 ... 997,998,999,0


...y el resultado al finalizar el algoritmo. Se ve como hay cruces largos entre puntos distantes, cruzando líneas, pero ha logrado reducirse notablemente de una forma muy simple y veloz.


En esta sin recortar se muestra además los datos del resultado:

Para 1000 nodos todavía es asequible usar una tabla de distancias (1 millón de elementos * 4 bytes = aprox. 4Mb.), así cada distancia se calcula una sola vez y se almacena, en un array bidimensional, con ello el algoritmo sería aún mucho más rápido que esos 45 segundos.
En cambio para 1 millon de nodos, requeriría aprox. 4Gb. y exigiría un PC con buena cantidad de memoria para encontrar ese espacio disponible contiguo (o ceñirse a otra estructura de datos no contigua).

Dibujando cada una d elas 5506 soluciones + la 'ruta.ToString', correspondientes, el tiempo se dispara a 458segundos. 10 veces más, es decir el tiempo se consume en el trazado más que en el cálculo, aunque es interesante verlo trabajar.



#152
Lo primero es lo primero... que es por donde hay que empezar.

Has mirado si está sucio el disipador y ventilador y si necesitan limpieza de pelusas o algún obstáculo (por ejemplo un papel o cable suelto que roza en el ventilador y que esté atascado) ?.
Que alcance demasiada temperatura es indicativo de que o bien no refrigera convenientemente o bien está consumiendo mucho. Lo primro es pues revisar físicamente las piezas en juego, lo segundo deberias saberlo según el juego en uso y las experiencias pasadas.

En esa revisión, además d ela limpieza, contempla el engrase del eje del ventilador. Y por supuesto revisa que los anclajes del disipador se mantienen adecuadamente pegados al chip (si alguno se suelta, solo con que se separe 1mm. el efecto refrigerante decáe notablemente, lo que provoca que aumente la teperatura, para solventarlo se aumente automáticamente la velocidad y el ruido aparezca como una consecuencia de poner al límites las revoluciones del ventilador. en cualquier caso cuanto mejor engrasado esté el eje y equilibrado el ventilador (un aspa rota (por ejemplo) lo desequilibra) sea óptimo, el ruido disminuye.

En última instancia si has 'overclok-eado' la propia tarjeta, quizás por defecto, instaure velocidad proporcionales a la velocidad del reloj de la tarjeta (algo no muy adecuado, pero que dentro de los límites normales, podrían tenerlo adecuadamente asociado).
#153
Windows / Re: 20H2
8 Octubre 2021, 03:37 AM
Citarme dice que el Archivo "  Install.wim " (tamaño 5.00GB ).es demasiado grande para el " sistema de archivos de destino "
Esto viene a indicarte que o bien tu versión de ultrasio es vieja o bien estás en un equipo viejo... o incluso que estás intentando montarlo sobre un DVD (por ejemplo), que está limitado a  4'7Gb. (aunque tú tengas un USB si pulsas el botón para montarlo en una unidad DVD por ejemplo)...
En cualquier caso pudiera ser que el programa tuviera algún límite en cuanto a tamaño para montar una imagen, de ser así habría que intentarloc con otro programa, que no tenga ese límite (la única versión  de ultraiso que tengo está instalado en este equipo que es viejo, desconozco por ello s versiones más recientes tiene diferentes cambios y límites, aunque lo lógico es que vayan con el tiempo actualizándose a las necesidades del presente).

Citar-Si pongo extraer en.. y elijo una carpeta sale un circulo dando vueltas y de.." ahí...
Varias veces salio el Ultra.." NO responde " ...
Si eliges extraer, es básicamente lo mismo que descomprimir, es decir 'desenvuelve/desempaqueta' cada fichero que contiene, en la carpeta de la unidad que le indiques. Como el fichero son 5Gb. y tendrá decenas de miles de ficheros, tardará bastantes minutos en función de lo rápido que sea tu unidad, el espacio libre que le quede y si le cuentas encontrar espacios grandes contiguos, tu CPU y lo saturado que esté el equipo con otras aplicaciones en marcha...

El mensaje de 'no responde' es el mensaje habitual no solo cuando 'no responde' (por algún problema) si no cuando (no hay ningún problema pero) una operación requiere mucho tiempo  (y ese es el caso), luego presumiblemente, no tiene nada que ver con el programa esté bien o mal, es lógico que tarde 10-30 minutos incluso más, depende del rendimiento de tu equipo... en extraerlo.
Ésta (extraer) no es la acción que necesitas si quieres instalar el S.O.

Citar
Estaba formateando con FAT 32   -Esto lo tengo "solucionado"
Qué es lo que has formateado en FAT32, el USB o tu disco duro???...

CitarAclárame si podes y queres lo que dije de UltraIso sobre somo lo saco del del programa cuando esta ya booteable
No entiendo qué dices.

Si instalaste la imagen del S.O. en una unidad preparada para ser arrancable (bootable), simplemente cuando apagues y prendas de nuevo el equipo (si es el mismo), solo tendrás que indicarle que arranque desde la unidad que acabas de preparar (si no es así, tendrás que entrar en la BIOS y cambiar el orden de proridad de las unidades de arranque, si el disco duro, está antes que la unidad USB extraíble, y el sistema no dispone de un tecla tras el POST, para parar el sistema y decidir en caliente la unidad de arranque, no podrás instalar nada, porque seguiría arrancando desde el disco duro.
Si esto lo has hecho bien y aún así no arranca desde el USB, lo más probable (salvo fallos tontos, como conectarlo a un conector USB desconectado internamente, etc...), es que la unidad no haya sido establecida correctamente como de arranque. Habría que mirar que opciones actiaste/desactivaste en el Ultraiso, para montar la imagen.



#154
Este tipo de denuncias suele tener seguimiento por parte de la policía.
En general los estafadores de cierto tipo, no hacne una sola estafa si no muchas. Las denuncias sirven para que la policía sepa que pasa y tengan datos de por donde se mueven fechas, etc... recabar datos. Cuando tienen varias denuncias (y con ello pistas sufiiicientes) la policía ten por seguro que hará la vigilancia que se precise para cazarlos.

En cuanto al dinero, será algo más difícil recuperarlo, de entrada debe haber pruebas de cuanto fue lo que te estafaron, cuando sean detenidos, y salga juicio, el juez determinará cuanto corresponde devolver a cada uno en función de la cantidad de denunciantes, las cantidades embaucadas y las cantidades incautadas a los timadores. Si no denuncias, más probabilidades de que otros timados, puedan rescatar la maor parte posible de su dinero. Haz cuentas si han estafado pongamos 300.000 euros, un promedio de 10.000 euros por cada uno, la policíoa les incauta 100.000 y solo hay 12 denunciantes, cada uno podría recuperar 8.000 euros... los que engan detrás a denunciar, ya no habrá 'fondo' para repartir.

En cuanto a CNMV, ciertamente si no están dados de alta, o pueden hacer nada contra gente que es anónima... ahora bien, tu has mencionado que operaban en no se qué página de mercados... ahí si podrías solicitar a la CNMV sobre el sitio, aunque no parece que ahí hicierna actos ilícitos, a buen seguro quedaron registrados sus datos (si no fuera una web pantomima, preparada solo para timarte), y en tal caso con la denuncia ante la policía, la policía si podría requerirles los datos de las personas que tu les indicares, para ellos hacer sus investigaciones.

Lo de contratar a un hacker... suerte y que no salgas escaldado.
#155
Las explicaciones dadas resultan engorrosas, confusas...

Los condicionantes que se exijan no quedan claramente indicadas. Se entiende la generalidad de maximizar el costo, pero, en base a qué?.
Al mínimo número de piezas, al costo de la suma de las piezas que lo componen?. Y en este caso cual es el límite... tu señalas cuantas piezas deben usarse como máximo o deben satisfacer una altura dada y/o no sobrepasar cierto peso, sea cual sea el número de piezas precisas?... si solo estuviera el campo costo de las piezas, sería obvio que se busca el costo mínimo, peor entrnado dos variables más en juego, está uno obligado a entender que tienen repercusión en el cálculo, pero que no defines ni meridianamente.

El código tampoco resulta revelador de estos aspectos, incluso tiene errores, en sendos bucles... hay arrays pero no se ve en parte alguna el uso del índice de los mismos.

En cualquier caso, el bactracking, exige recursividad y/o al menos iteratividad, pero en ningún caso se hace ese tipo de llamadas (ni llamadas recursivas ni llamadas dentro de un bucle) en el código expuesto.

Claro que dado el nombre de la función: 'actualizarSolucion', parece ser que ahí simplemente se ofrece salida a una solución temporal (calculada, se supone que óptimizando a un cálculo previo) y que la recursividad para la búsqueda (que quieres solucionar) yazca en otra función pero que aquí no se expone.
#156
Cita de: ruby en  3 Octubre 2021, 15:09 PM
...Alguien que me pueda explicar qué se intenta hacer en esa función por pasos?

El caso es que la explicación que solicitas se te da al comienzo, en los comentarios:
Citar
/*  Función es_primo (int p)
    p   parámetros de entrada. Número a evalurar si es primo
    Devuelve:
        0   Si p no es primo
        1   Si p es primo

    Para ver si un número es primo se intenta dividir por todos sus posibles divisores.
    Si alguno da resto cero, entonces no es primo
*/
Claro que es posible prestarse a confusión (cuando uno no lo entiende) si no se asocia a cada línea de código ...

Citarint es_primo ( int p )
   const int MAXFACTOR = ( int ) (sqrt ( (double)p )); /* Máximo factor posible de p */
En efecto, si por ejemplo buscas si 99 es primo, el máximo divisor de dicho valor será a lo sumo la raíz cuadrada (9*9), porque a partir de ese momento, el multiplicando va tomando los valores del multiplicador y al revés... que ya fueron comprobados. Es decir porque (a*b) = (b*a)

Citar
int f; /* Factor por el que se va comprobando si p es divisible */
   int primo; /* 1 Si p no es divisible por ningún f probado y 0 en caso contrario */
Quédate con que son dos enteros auxiliares en el cálculo y en vez de anticipar su uso, es preferible verlo (dado el caso), sobre la marcha cuando se usan.

Citar
   primo = ( ( p % 2 ) != 0 );
p es par o impar...?, se usará luego en el bucle en una forma embebida de condicional para el fin del bucle 'si primo=1' (si es impar)...

Citar
   for ( f = 3; primo && ( f > MAXFACTOR ); f = f + 2 )
El bucle comienza en 3 (nota que deja el 2 fuera del bucle, por la convenincia de saltar entre impares. Hay sin embargo un errror lógico ya que 2 es un número primo.
Como sabemos que el único primo par es el dos, se deduce que basta mirar los impares, toda vez que con solo el dividir entre 2 sabemos si es par y por tanto ya no es primo (si es superior a 2, verificación que falta).

Citar
      primo = ( ( p % f ) == 0 )
Similar a antes, pero ahora se pregunta si es p módulo f es par. Aquí se está diciendo que hay posibilidades de que sea primo, si al dividir 'p' entre 'f', el resto de la división no es 0 (condición que acabaría el bucle). Es decir si proporciona una división entera para este divisor, no es un primo pues tiene dos factores que lo dividen: 'f' y 'p/f'.

Citar
   return primo;
}
En los comentarios se indicaba que devolvía 0 si no era primo.

El código de Mafus, separa claramente cada caso, sin dejar fuera el 2... Y en el bucle, incluso aunque sea menos eficiente (una multiplicación que una comparación), queda más claro el límite del bucle que en el código que traes con MAXFACTOR... Nota la diferencia entre facilidad de entender y eficiencia de ejecución, para aprender interesa lo primero. Cuando funciona bien y se entiende al completo, puede optimizarse, al menos lo obvio.
#157
Como te han dicho, la lectura de un fichero está ligado a la escritura del mismo.

Por ejemplo si para hacer la escritura, se escribió algún separador entre campos, o entre indices de la estructura, o incluso si para algún campo se usó un padding... La estructura indica sobre todo como se dispone en memoria, pero no necesariamente se guarda así en fichero. Incluso al guardarlo a fichero una función podría cambiar el orden de algún campo al escribirlo...
....esas mismas consideraciones deben usarse para la lectura, por ello es imprescindible tener la función de escritura a mano (donde puedas verla), para asegurarte que el formato de lectura coincide con el de escritura. Por supuesto considera que si sobrepasas el final de fichero, en efecto es normal obtener un urli-burli de datos.

Así tu primera preocupación tras abrir el fichero es comprobar si el número de registros guardado y dado el tamaño de cada registro (+ lo que ocupare una posible cabecera), coincide con el tamaño del fichero.
...y lo siguiente es alinear el puntero de lectura con la posición del primer registro (esto es,  saltando la cabecera que pudiera tener). Es habitual si hay cabeceras cuyo tamaño es variable, mantener en dicha cabecera, el puntero absoluto de comienzo del primer registro dentro del fichero.

En resumen cíñete al formato con que fue escrito, para lo que necesitas o bien tener el código fuente de la función que se escribió el fichero o bien una descripción en prosa con tales detalles.
#158
Hardware / Re: disco HDD
29 Septiembre 2021, 12:10 PM
Cita de: Zorronde en 29 Septiembre 2021, 03:54 AM
Tengo, un disco HDD y lo quiero usar para  " guardar" mis ARCHIVOS
HDD.. sata  un conector a  USB
Que tendría que instalar en este HDD para que Win 20H2  lo " reconozca " (es mi SO)
Pense en instalar..Win7 (  Cuanto mas "chIco" mejor )
¿ Alguna. idea ?
No acabo de entender que tipo de persona necesita preguntar cosas tan elementales, aparte de alguien cuya toda experiencia vital con un ordenador (montado y funcionando), se remita a haberlo usado un par de meses.

Parece que fueras el primo de win-7.
#159
Usa alguno de sus nombres nativos antiguos 'Shih-pasheng', 'Chung-qwo', 'Hwa-qwo'.
Incluso el nombre que le daban los romanos y los griegos: 'Serica' (país de la seda), o 'Catai', como lo llamaba Marco Polo...
..hay más nombres en función de como lo llamabn otros países.

Resulta bastante estúpido que Google-Youtube intente filtrar la palabra China. No tiene ninguna conotación peculiar per se. Además hay ríos en Brasil, Colombia... que se llaman China, incluso algún cerro...

pd.: También puedes intentar con Ch1n@

Dudo que el 'algoritmo' de youtube, haga esas cosas, más bien creo que obedecerá a las 'denuncias' de los usuarios. Además como seguramente todo está automatizado, no habrá nadie que verifique la exactitud de una denuncia si no que si hay cierto grupúsculo de gente que se dedica a censurar lo que no encaja en su ideología, sin duda cada uno indicará al resto que denuncien a tal o cual usuario... el algortimo entonce sse limitará a que si hay x denuncias contra un usuario 'algo habrá de razón' y dará por buena la denuncia...
Recuerda las nociones matematicas de media, mediana y moda: Ahí se aplica la 'moda', la simple Popularidad, nula inteligencia detrás de ello.
#160
De momento no creo que afecte.
Ya veremos con los siguientes certificados que caducan (en noviembre caduca otro y 3 más en diciembre)

Mi certificado no tiene activa tantas opciones, y puedo navegar tanquilamente. y las que tiene tampoco resultan imprescindibles. Los X2 y X1 caducaron en 2008. Para las empresas la cosa si puede llegar a ser diferente, porque muchas aplicaciones profesionales sí son dependientes.