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

#1301
Programación C/C++ / Re: C++ , duda con vectores
28 Octubre 2019, 22:50 PM
Este tipo de problemática está resuelto satisfactoriamente desde hace 60 años o más, si bien adaptarlo a cada situación es lo que puede tener su miga.

La solución está en los árboles de Huffman, pero además no en uno simple si no en uno adaptativo.
Como supongo, sabrás, los árboles de Huffman se utilizan para la compresión de datos con el algoritmo que lleva su nombre... (inical y principalmente), donde el byte (valor más repetido) se le otorga pesos en función de su frecuencia.
...cuando es adapatativo señala que la frecuencia se actualiza con cada aparición (lectura de cada byte) lo que fuerza a actualizar el árbol: Si un nodo (le siendo sumado) supera en frecuencia al previo, desde ese instante, ese valor (el byte aparecido), se codifica con el valor que tiene asignado la posición del nodo...

Nota, que no es necesario reproducir en todo el algoritmo solo la parte que construye el árbol y la parte que lo hace adaptativo.
Un árbol de Huffman, típicamente se construye al inicio y luego se usa... pero en tu caso conviene que sea adaptativo, pués una vez que envías un emisor a un colector, el total de colector aumenta, luego tiene menos capacidad libre y por tanto bajaría en el nodo si ahora tiene menos disponibilidad libre que otro colector.
Algunas diferencias hay... en tu caso cuando un colector se llena, se supone (intuyo porque eso lo indicará la especificación completa del problema), deja de ser utilizado, lo que de algún modo implicaría retirar dicho nodo del árbol (y si existe un factor tiempo (u otro) que luego lo rehabilita, pués hale tocará añadirlo en su posición cuando se habilite superando a todos los nodos por 'espacio libre en toneladas'... Lo mismo si se añade un colector de repente al árbol... es decir necesitarás alguna función añadir colector(peso)... que examine que posición le corresponde en base a su 'espacio libre' en toneladas... es mejor abstraerse de toneladas, basura y tal y atenerse meramente al asunto matemático...

Un árbol de Huffman, netamente es un árbol binario que funciona conducido por el peso de los nodos, es decir el valor se establece al inicio... (en tu caso al inicio supone establecer el total que puede almacenar cada colector o si ya está usado, lo que le queda libre) y como he dicho precisa ser adaptativo... en Huffman adaptativo es costoso en tiempo ya que está continuamente actualizándose con cada byte... otro modo es 'semiadaptativo', es decir se propone (por ejemplo 4kb., 64kb. de bytes), se van sumando mientras y cuando se completa esa cantidad se reordena el árbol, conforma los nuevos valores... La compresión lograda con un algoritmo adaptativo es superior a los otros semiadaptativo o no adaptativo, pero el coste en tiempo es mayor.
Debes establecer en función de la cantidad de colectores y frecuencia en emisiones si en tu caso conviene que sea adaptativo o semiadaptativo, y si es semiadaptativo, debe encontrarse el punto aceptable para actualizar el árbol... (por ejemplo, cada 10 emisiones).

Todavía operar con árboles resulta lento, más siendo adaptativo... la opción más efectiva es operar sobre un array. Un array puede representar a un árbol binario, básicamente cada nodo de un árbol binario viene representado en un índice específico del array... un pequeño cálculo permite pasar de un nodo a otro. Así en vez de usar referencias a 'siguiente' anterior', 'derecha' o 'izquierda', tu tendrás sendas funciones que devuelvan el índice correspondiente dado aqule en el que estás y el acceso al que tratas de llegar...

Nota finalmente como un árbol, retiene la info que pedías al comienzo, pero sin necesitar un indicador otro que la que representa su posición y que obedece a su valor, al valor que alamcena que en tu caso debe ser el espacio libre o más complejo en función del espacio libre y el costo asociado...
...y finalmente ese array utilizado como un árbol binario, ofrece la velocidad que pueda ser preciso, aunque en el caso que te trae, considero que tiene menos sobrecarga que la simpre compresión de un fichero de 1Mb. (por ejemplo). Así que si finalmente construído el árol te funciona y satisface la velocidad y sobrecarga, podrías no necesitar el array... ya valorarás el caso.

Así que una vez te empapes sobre construir el árgol de Huffman y lograr que sea adaptativo, y luego (que funciones bien) remplazarlo por el array, finalmente te queda solventar la cuestión del costo (pesos de cada nodo). Ahí ya es cosa que tendrás que lidiar con la especificación que te hayan dado. Si el ejemplo es real (no un ejercicio), probablemente el costo será dado en kilometraje o en tiempo, etc... pero como digo, antes de meterte en el fregado de dar los pesos al árbol, primero constrúyelo con valores ficitios, no calculados, para verificar que el algortimo funciona bien que se actualiza convenientemente, y solo al final toca sustituir esa parte por la que en efecto calcula el peso real de cada nodo... en el árbol de Huffman esa parte es la más sencilla, pués se lleva la cuenta de la presencia de cada byte. Para grandes cantidades de datos, cuando el valor en la raíz supera cierto umbral para evitar desbordamiento del tipo de datos, suele recurrirse a dividirse todos (el valor de cada nodo) por la mitad...  es decir ciertos detalles no son tu caso, otros son ligeramente variados y otros se aplican al 100%...

Bueno, ya tienes pan para ir comiendo... Si tienes alguna duda, pregunta... pero ven ya con algo más sólido...
#1302
Programación C/C++ / Re: C++ , duda con vectores
28 Octubre 2019, 18:16 PM
La descripción del planteamiento está bien... aunque falta algún detalle.

- Cuántos colectores I hay y cuántos focos de emisión J hay.
- La suma total de los focos de emisión J, se sabe si caben en la suma total de los colectores I, o quedará algún emisor sin poder enviar su carga?. Lo ideal es que aún quedara algún colector sin llenarse del todo y los emisores haber podido enviar todo.

...y para 'descomplicar' el asunto, yo en vez de llamarlos I y J, los llamaría colector y emisor, para evitar equívocos en algún momento...
#1303
Por supuesto... y si te pones una capucha o una maleta delante... según algunos, es solo cuestión de meter más datos...

Tiene dos patas, es en Madrid, una maleta en la mano y un traje ridículo que cubre toda la cara, se pasea de delante atrás contínuamente, la maleta de cerradura a cerradura 28'3cm...
es el cobrador del Frac 95%  
es Belén Esteban operada y maquillada para una fiesta 99%
es un tipo esperando a un amigo para una fiesta de disfraces 57%



Hablando en serio... esto de cámaras por todas partes, hay que ponerle freno antes de que sea demasiado tarde...
Una cosa es que un país coChino, que es una dictadura no puedan ni piar y otra cosa es que perdamos todas las libertades por gobernantes ansiosos y envidsiosos de hacer lo que el gobiernos coChino hace, olvidando que estos son países democráticos...

...y no, ahí no saldrán los J1L1P0LL@5 niñatos catalanes a protestar... nadie les ha instruído para protestar por sus propios derechos, solo les han instruído par aprotestar por sus 'políticos'...
#1304
Tienes info ampliada en la wikipedia... (copia y pega la dirección sin el asterisco, al enviar queda cortado el enlace tras '_' )...
*https://en.wikipedia.org/wiki/Haskell_(programming_language)

Y para el lenguaje lo mejor es acudir as su propia página. en estos momentos la versión oficial es Haskell 2010.
https://wiki.haskell.org/Haskell_2010

Y por supuesto la página del portal:
https://wiki.haskell.org/Haskell
Ahí mismo, tiene para descargarlo, la especificación del lenguaje incluso acceos a libros, los IDE, etc... de hecho está planteado bien claro en 3 columnas: Aprender, El lenguaje y foros (la comunidad del lenguaje):


Ten en cuenta que Haskell es un lenguaje funcional derivado de Miranda. Los lenguajes funcionales son intencionalmente parecidos al proceso matemático, luego una forma clara de decir si ese lenguaje no es para tí, es responderte a tí mismo si eres bueno o malo con las matemáticas... si te cuesta entender la notación matemática olvida los lenguajes funcionales...
... es algo que debes saber de antemano, para no perder tiempo y descubir al cabo de un año que no has avanzado gran cosa porque te cuesta entender conceptos que en otros lenguajes toma a lo sumo 2 días, porque son muy diferentes o ni siquiera existen...
#1305
Si has verificado que existe (entiendo que en tu equipo puedas abrir el 'regedit' y buscarlo, pero al verificar lo que quiero decir es que puedes listarlo por código y aparece, porque no vas a ir al equipo del cliente a mirar su regedit, no?), lo siguiente que procede es saber si tienes permisos para acceder a dicha clave.

Nuevamente si es en tu equipo, puedes simplemente abrir el regedit pinchas en la clave con el otro botón y tomar permisos para el usuario (si el usuario tiene un mínimo de privilegios), si solo vas a leeerlos basta el permiso 'read', si tienes que ahcer modificaciones, etc.. el 'full control'.

...y nuevamente (esto ya es mala costumbre), para información específica, ningún sitio mejor que la propia documentación del propio fabricante/proveedor del software... (cualquier explicación dada por terceros nunca será exhaustiva, porque a nadie le apetece repetir lo que ya viene explicado en otras partes, solo porque al que pregunta le dé pereza buscar la info donde procede).
https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-key-security-and-access-rights
En dicha página a su derecha aparece el árbol de temas sobre el registro, tómate el tiempo necesario para leer... es preferible documentarse bien que andar preguntando contínuamente, como es preferible tejer telas nuevas que zurcir trozos viejos y rotos para unirlos.

...programar a golpe de preguntas, es tedioso lento y sujeto a mala praxis de programación (básicamente supone que por falta de conocimientos se va improvisando sobre la marcha).
#1306
Programación C/C++ / Re: C++ , duda con vectores
27 Octubre 2019, 18:53 PM
En un array no hay necesidad de identificar nada... el identificador es precisamente 'el array', su nombre. ...que, como colección homogénea mantiene índices para cada elemento... Otra cosa es que con posterioridad puedas hacer búsquedas sobre el array, a lo cual se recurre a acceder individualmente a través del índice para cada elemento del array.

Posiblemente tengas conceptos equivocados sobre lo que es y puede hacese con un array...
#1307
Antes de abrir una clave, que tal si primero compruebas si existe?... Si no, estás cazando gamusinos.
#1308
Eso es como romper la punta del lápiz... lo que resta, pasa a ser la punta del lápiz.
Matar al cabecilla, deja el puesto libre al que viene detrás.

Se puede afirmar que terminas con la punta del lápiz, solo cuando ya no queda lápiz... y no habrá cabecilla, cuando absolutamente toda la banda sea aniquilada, sino, se se queda en un cambio de nombre...
#1309
Los independdentistas catalanes, quieren necesitan provocar, para que el Gobienro responda con contundencia y así tener imágenes y la excusa de "represión"...

Aunque rara vez esté de acuerdo con Sánchez, en esto, estoy con él... creo que lo mejor que s epuede hacer es ningunearlos, la policía justa para evitar los daños del mobiliario urbano pasen a daños personales.

Los independentistas, quieren que acudan 'bomberos' con mangueras a arrojar grandes cantidades de agua...para justificar sus acciones y la escalada en agresividad. Un intento de fuego, se exitngue mejor evitando que respire... privándolo de 'aire'.

Eso sí, niñato cogido haciendo destrozos, multa a los padres para que paguen los daños ocasionados... a la que vaya por el 100 y el 3º o 4º día, verás como serán sus propios padres quienes les impidan salir de casa. Los mayores de edad multa y un tiempo en la cárcel.
#1310
Ya hace algún que otro años que no es "Made in China", sino "Made in RPC"...

Todo lo dicho está muy bien, pero parece curioso que hayan olvidado, que el gobierno chino obliga a las empresas a tener acceso a todo... y cada vez son más 'C0Ñ@Z05' con el tema, que te quema... los secretos empresariales son secretos y la privacidad es la privacidad, las empresas empiezna a sentirse tratadas lo mismo que si fueran empresas chinas.