No es problema de Codigo si no de Algoritmo (Ayuda)

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por dacu »

Por petición, he editado el post para adecuarlo mas a la nomenclatura apropiada para la materia.

Introducción sobre el Proyecto

Se basa en 2 apartados bien distintos.
1. La idea es construir un diagrama de "Árbol" en lenguaje Autoit
2. Una vez construido el "Árbol" crear un Orden asignado a cada uno de los "Nodo" de todos los "Niveles".

Parte 1: Contribución del Árbol

Partimos de:
1. Se Partirá de un "Nodo raíz" o también conocido como "Hoja"
2. Antes de Generar el "Árbol" y sus múltiples "Niveles" - Se especificara literalmente Cuantos "Nodos" de cada "Nivel" tienen que existir en el conjunto del "Árbol"

Condiciones para la creación del Arbol
  • 1. Todos los "Nodos" tienen que tener mas de "2 Ramas" es decir. Ningún "Nodo" puede tener solo "1 hijo"
Notas:
Hay que decir que se espera que la distribución favorezca la regularidad. Es decir, que todas las Ramas contengan prácticamente el mayor numero posible de Nodos, No tener Ramas con 2 Nodos y la otra con 7.

Parte 2: Generar Orden a cada Nodo

Historia: A modo de ejemplo, imaginaros que tenemos 2 cajas en la cual quiero meter 5 caramelos. Ya se en que caja tengo que meter cada caramelo. Caja="Nodos-Nivel1" Caramelos="Nodos-Nivel2" en este ejemplo meteremos en la (Caja1) 2 caramelos y en la (Caja2) 3 caramelos, esto no es problema ya que en la opción de arriba ya hemos creados el "Arbol" y sabemos donde va cada cosa.

Ahora imaginaros que esos caramelos los tengo que meter en las cajas con un cierto Orden. Ejempl:
Si la (Caja1) se Abrió el día 1 ya no puedo abrir la Segunda (Caja2) el mismo día que la (Caja1) como tanpoco puedo meter el caramelo que va en la (Caja1) el mismo día que se abrió.

Dejando los caramelos al lado para que no nos entren ganas de comprar unos cuentos. Voy a ir al grano.

Una vez el Árbol esta completo, necesito crear un Orden en Cada "Nodo". Del 1 hasta el Mínimo numero posible siguiendo estas reglas.

Condiciones para la creación del Orden
Recordar que es con el árbol ya creado
  • 1. Existen Nodos que pueden tener el Mismo Orden. NodoB=Dia 1 NodoF=Dia1
    2. Ningún "Nodo" del "MISMO NIVEL" se le asignara el mismo Día(Orden)
    3. Todos los Nodo del "MISMO NIVEL" se tiene que llevar mas de 1 Dia de diferencia entre uno y otro ( Nivel1 Nodo(A) Dia 1 - Nivel1 Nodo(B) Dia 3 )
    4. Ningun Nodo podrá tener el Mismo día que su Nodo Padre ni un día + Ni un día -
Notas:
Al Final lo que se espera es tener un orden. Con la finalidad de que en un Mismo día (Dia 1 .ejmplo.) existan en ese día los máximos nodos agrupados ahí posibles (Siguiendo las condiciones)

Fin
Última edición por dacu el 03 Dic 2012, 17:23, editado 7 veces en total.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por Ximorro »

Buf lo he intentado mirar rápido pero con prisas no se puede entender, hay que sentarse y mirarlo con tranquilidad.

Un problema es que no usas la nomenclatura estándar y eso lía un poco la cosa, en vez de inventar términos, siendo que ésta estructura es algo muy conocido, es mejor que uses lo que todo el mundo. No digo que tengas que saberlo de antemano pero te cuento y si usamos todos lo mismo nos entenderemos mejor.

Informáticamente (más bien en teoría de estructura de datos) esta estructura se llama "árbol". Lo que tú llamas cubo se le denomina formalmente como nodo, y lo que llamas nodo, que creo que es una sucesión de tus cubos encadenados, sería una rama.
Nivel es correcto, buena intuición.

Mi lío es más que nada es por tu definición de "nodo", como esa palabra se usa mucho en árboles pero significa otra cosa se complica entenderlo porque cuando dices nodo pienso en lo que tú llamas cubo ;-)

Mira aquí tienes un resumen rápido de la estructura árbol, es para C# pero pasa del código, la cosa es "el concepto".
http://www.puntopeek.com/codigos-c/la-clase-arbol-en-c/

Si tengo tiempo miraré con más tranquilidad el problema pero creo que deberías poner un ejemplo de "relleno del árbol" con datos de ejemplo para ver cómo va evolucionando el método.

¿El problema es, dado un nodo, saber dónde va? Por lo que he entendido en mi lectura demasiado rápida si cada nivel tiene un número indeterminado de nodos no se puede saber exactamente, a menos que esos números que das (Nivel 1=2 - Nivel 2 = 5 - Nivel 3=12) se fijen antes de empezar la inserción.
Dices que cada nodo debe tener como mínimo dos hijos pero no se sabe el máximo y si los nodos por nivel no estás prefijados sólo se podrán hacer estimaciones.

Por otro lado ese árbol es algo que has decidido que es la mejor estructura para resolver tu problema o almacenar los datos tal como los quieres, pero también sería interesante que comentaras qué quieres hacer, vaya, el problema original, porque a lo mejor te podemos indicar una estructura que resulte que se adapta más a tu problema y que sea más fácil de manejar que este árbol, quién sabe.

---
Al margen, es una pena que abandonaras los estudios por falta de estímulos, comprendo que puede ser difícil pero si me permites un consejo no estaría mal acabarlos, a menos que hayas aprendido un oficio que te guste y te vaya a dar de comer, claro.

Si no es así aún estás a tiempo, y te digo una cosa: en la vida es necesario hacer algunos esfuerzos, no todo es fiesta y hacer sólo las cosas que nos gustan, ójala. Así que si por ejemplo quieres estudiar profesionalmente cosas como informática o matemáticas la universidad es un buen punto de partida, pero la forma típica de entrar es acabar la ESO e incluso en la universidad habrá asignaturas que no te gustarán mucho. Normalmente hay que pasar un poco "por el aro" para acercarnos más a hacer lo que queremos. A mí me gustaba la informática y estoy trabajando como técnico informático, pero sin un título no podría haber optado a este trabajo. Para esto he tenido que hacer la carrera y realizar esfuerzos o sacrificios con los que evidentemente no he disfrutado.

Si lo que dices es cierto no te costaría un esfuerzo tremendo y sinceramente teniendo el potencial es tontería que te compliques la vida en el futuro.

Un ejemplo: no sólo la falta de currículo formativo te puede perjudicar conseguir un trabajo que desees, es que si alguien que te va a contratar ve un "e echo" como has puesto arriba se va a pensar lo de contratarte por mucho que digas que eres muy listo porque puede pensar que no lees mucho, y aunque le digas que tú estudias un montón las cosas que te interesan puede que no se lo crea fácilmente pues las faltas graves suelen indicar que no se lee mucho, y si no se lee mucho, es que poco se ha estudiado (a menos que estudies en otro idioma, claro ;-) )

Bueno, todo esto se podría pasar a "chat". En realidad no pretendo hacer de "padre" ni sermonear ni nada de eso, lo que pasa es que te he leído y he pensado ¡pues vaya desperdicio!. Así que simplemente te lo digo para animarte. Claro que debes procurar hacer las cosas que más te motiven y gusten, pero es una pena que teniendo el potencial de conseguirlo no lo hagas porque en el camino hay cosas "que te aburren".

Ale fin del rollo macabeo ;-) Si quieres darme caña mejor pásalo al subforo de chat... ;-)
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Re: No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por dacu »

Ximorro escribió:Buf lo he intentado mirar rápido...................
Como no podía ser de otro modo. Me esperara una contestación por parte tulla Ximorro entre otros que suelen ser los que mantienen este foro activo.

En cuanto al Proyecto de crear el diagrama (arbol) Voy a investigar la forma de decir las palabras correctamente y volveré a editar el Articulo para que se pueda entender mejor. (dentro de unas horas)

La verdad es que vivo de Internet (gracias a las webs que tengo) y de momento no me va mal. De echo casi puedo invertir en casas mas grandes. Tengo 21 años y después de quitarme de la eso hice un modulo de Electrónica y otro de Informática Solo Grado medio.

En verdad si que me motiva ir a la universidad y podría ir pasando antes por un Superior de informática (programación) para no hacer el bachiller que eso si que no me veo haciéndolo.

Como te e dicho antes si estudio no es por el dinero, para conseguir un trabajo, Ya que por suerte ese campo lo tengo muy bien organizado. Pero por aprender mas en algunas materias como matemáticas que si que me gustan y sobre todo programación pues si que entraría en algún curso y lo terminaría claro. Sobre la ortografía no tengo nada que decir, es algo que todavía a día de hoy intento pulir. De echo yo no contrato redactores que escriban mal (es algo que me lo tengo que tomar mas enserio, ¡si!)

Le dedico entre 12 y 16 horas al ordenador no creas que salgo mucho, solo cuando los amigos me secuestran. No bebo como mucho un poco de cannabis para expandir la mente, comida vegana y un poco de deporte. A también toco el piano XD

jaja Me a apetecido contar un poco mi vida. Bueno lo dicho luego escribo correctamente lo que quiero hacer con sus palabras Correctas para que lo entiendas y lo entienda todo el mundo. Gracias. Mirare el codigo C# y ahora que se como se llama voy a investigar por la red.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por Ximorro »

Buenas, bueno ya no tengo tanto tiempo como antes así que no te puedo prometer nada.

Estuve pensando un poco del tema de los árboles en AutoIT, y te puedo decir que la cosa no es nada fácil, este lenguaje no está preparado para estas cosas. Así que si el problema original se puede reconducir a estructuras más simples (como matrices) mucho mejor.

Estas estructuras en las que vas añadiendo y quizás quitando nodos activamente forman parte de lo que se denomina "programación dinámica". Quizás hayas oído hablar de pilas, colas y listas, pues esto también forma parte de la programación dinámica, y AutoIt no es muy bueno para eso.
Estas cosas se pueden recrear con estructuras estáticas (como vectores o matrices). Las pilas y las colas son bastante fáciles de montar en vectores, las listas no son complicadas, los árboles son bastante complicados (los binarios no tanto pero también) y los grafos mejor no pensarlos.

Así que no sé, si es necesario trabajar con árboles hay dos problemas, el que tienes con el método y manejar el árbol en AutoIt. Lo estuve pensando y se podrá hacer con matrices que contienen matrices, que se van asignando dinámicamente y recreando con Redim y cosas así. Desgraciadamente manejar en AutoIT vectores que contienen vectores que contienen vectores... es una pesadilla. Yo aviso, si puedes desarrollar el programa en un lenguaje que disponga de programación dinámica mejor (C, java, etc.), si quieres hacerlo en autoit sería interesante también ver si se puede solucionar de otra manera.

Por cierto, no te decía que miraras el código de C#, precisamente decía que el código NO lo miraras, se trataba de leer el artículo, que te contaba los que es un árbol con la terminología estándar, y eso vale para todos los lenguajes.

--

Que quede claro que en ningún momento he dicho que fueras un vago o algo así, de hecho por eso comentaba que si habías aprendido un oficio que te gustaba y te permitía ganarte la vida era algo genial. Simplemente recalcaba que si te gustan las matemáticas y la informática y quieres estudiar sobre eso con cierto nivel sería más lógico hacer una ingeniería, ¡y que si es lo que deseas pero no lo haces porque te aburren otras asignaturas es una pena!

Sobre la ortografía te recomiendo leer, ni más ni menos, nada de estudiar libros de lengua y ortografía. Lee lo que te guste, terror, ciencia ficción, novela rosa, lo que sea ;-). De ver las palabras repetidamente al final te las aprendes, se puede mejorar muchísimo sin estudiar reglas.

¡Me alegro mucho de que te vaya tan bien la empresa!, está claro que eres un tío decidido y te sabes manejar. ¡En cualquier caso deja que te secuestren los amigos más a menudo, hombre! Y ten cuidado con la maría, no está claro que a más largo plazo no tenga ningún efecto.
En cualquier caso ese tema mejor lo cerramos ya, por este foro me consta que hay menores y no corresponde. Para contrarrestar tu comentario te diré que en mi época de estudiante saqué muy buenas notas (menos buenas en las asignaturas que no me gustaban, pero las aprobaba ;-) ) y nunca tomé ningún tipo de estimulante.

Byeee
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Re: No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por dacu »

Ximorro escribió:Buenas, bueno ya no tengo tanto tiempo como antes............
Byeee
Gracias por contestar.

La verdad es que no controlo ningún Otro lenguaje por eso en hacerlo en autoit.

De todas formas creo que lo estoy complicando demasiado. Creo que si lo consigo enfocar de otro modo podría sacar el mismo objetivo.

Cuando encuentre una manera mas sencilla de explicar lo que quiero y de diferente forma la expondré aquí..

Gracias por todo. Mirare lo de las matrices Saludos.
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por jamaro »

Hola dacu.

Esperamos a tus nuevas aclaraciones sobre lo que necesitas. En principio hice algunas pruebas con For...Next en función de los valores que ponías de números de "nodos" en cada nivel, y con la restricción de que como mínimo hubiera 2 en cada nodo superior, pero, efectivamente, no tengo claro que es lo que necesitas exactamente y si podré aportar mi opinión.

¡Saludos!
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Re: No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por dacu »

Ya lo tengo chavales. XDD luego actualizo y expongo el código XD.
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Re: No es problema de Codigo si no de Algoritmo (Ayuda)

Mensaje por dacu »

Perdonar por tardar tanto. Pero ando liado, que sepáis que cuando tenga un momento lo publico no me he olvidado de vosotros.

Saludos.
Responder