jueves, 28 de abril de 2011

Proyecto: Informatizar un problema matemático de primaria, Divisores (6 de 10)


Estamos en la fase de implementación y, mientras me voy haciendo con Eclipse, vamos a ir comentando un punto delicado : Limitaciones y límites a considerar.
Y es que , hasta aquí, todo era más o menos teórico pero, ahora, llega el momento de crear “la criatura” y, como colación de la pregunta del otro día, pues toca hablar de ciertas cosas.

¿Qué máximo valor podremos descomponer con la certeza de que obtendremos siempre divisores primos?
Sí, si alguien lo pensó, decirle que el número máximo será siempre el cuadrado del máximo primo que tengamos , así si os dije que teníamos los primos hasta el 108 evidentemente podemos admitir para hacer la descomposición factorial hasta, prácticamente, el 1016


Puntos del dibujo 1,2 y 3 !Primer vistazo!

Vamos a ponernos en un caso:
Supongamos que el valor máximo de nuestro fichero era el primo justo anterior a 109 y que, por tanto, admitíamos su cuadrado y, nos dan 2*1016 como valor x inicial para resolver....

El punto 1 lo pasa exitósamente. (Por ahora es natural y mayor que dos)

El punto 2 vemos que 2*1016=217*516 luego, se nos genera un array de longitud 17+16=33. Lo que tampoco supone un problema.

Y ahora llegamos al punto 3, donde había que generar números desde el 0 hasta, en este ejemplo, el 233 -1 y , por cada número, convertirlo a cadena de bits y hacer el condicional y ,si el valor resultante obtenido para ese número no estaba en el Vector solución, incluirlo.

Bueno, vemos que estamos tocando números “mucho grandes” y toca hacer una aclaración... y es que java, en un principio y si no se dice otra cosa, interpretará los números con el tipo básico Integer (int ) que, comprende 31 bits para valores y uno para signo. 
Asi que: !Ojito que corremos riesgo de desbordamiento!



Y hablando de desbordamiento vamos a hilar fino, fino, fino, a continuación:

Alguno me diréis , pero oye que habíamos quedado que el fichero de primos iba a contener los primos hasta 108 más o menos......
No eso no es cierto , en un principio diseñe el programa para que al introducir un numero no decimal y mayor que cero el programa lo asociara a una variable int y por tanto si probais a meterle un número superior a 231 el programa debería de fallar pero, hasta ese número el programa no debe de fallar.
Google : "Optimización"

Claro , y aquí es dónde alguna mente sagaz ubicará la pregunta de: 
-"Pero oye, si yo, por ejemplo, al programa para ver los primos, le introduzco el número 200000000 el programa “casca” y me sale un

Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

,¿Se rompe?"-

Bueno, eso no es que precisamente el programa falle.
Estáis ante un caso de optimización que se da mucho en minería de datos.
Y es que, cuando ejecutais el programa bien en windows con el bat o bien en linux, si no hacéis nada el programa se ejecuta con los parámetros de memoria configurados por defecto en la máquina virtual que lo interpreta.
Y , claro, la pila se llena tanto que desborda la memoria asignada por defecto para la ejecución de dicho programa (de intercambio).
Esta circunstancia es propia , por la teoría de computación, de enunciados cuya resolución genera  "muchos subcálculos a tratar" es dificil explicarlo de un modo "no-técnico" pero, espero,  que el ejemplo os ilustre: 
A más factores primos divisores, muchísmos más subconjuntos a estudiar . De hecho , el número de subconjuntos crece de forma exponencial. 
Otro ejemplo que podréis encontrar, de esto que os comento , es el conocido problema de Viajante  y si queréis más, buscad "Problemas de planificación " o Schelude. 

¿Soluciones? 
 
Pues, como he dicho, es un problema de optimización de recursos.
Debemos saber que, la máquina virtual de java que interpretará el programa está justo encima del sistema operativo. Esto supone que, de la memoria que tenga para gestionar en mi equipo, deberé reservar un minimo para el sistema operativo y el resto puedo reparametrizarla en la maquina o bien en mi programa.
Así pues, vemos que, depediendo de: la memoria que tengamos , del sistema operativo sobre el que se pose la JavaVirtualMachine (JVM, interpretadora, o como la queráis llamar) de los servicios (en windows) o demons (en Linux, asi como el suso de entorno grafico en este último en el mismo), que tengamos habilitados podremos ampliar o no la memoria confiriendole asi mayor capacidad de trabajo (eso si a cambio disminuiremos la velocidad pero, podemos, como estoy diciendo ampliar el rango). Eso si debéis recordar que la paginación y la memoria virtual que requiere un sistema operativo tambien requiere memoria asi que a ver si por ganar en la JVM perdeis en SO y por tanto no habéis hecho nada.


En internet he encontrado la siguiente tabla de Megas mínimos a reservar para los siguientes sistemas operativos que sólo vayan a usar nuestro proceso, ya en futuras entradas la ampliaré , ahora sólo estamos hablando de como construir nuestra “maldita “ aplicación.

Windows XP: dejar 392MB para el SO
Linux: si no ejecutas las X, puedes llegar a dejarle sólo con 64MB para el SO.

Y estos para quien aun los use:
Windows NT: dejar 128MB para el SO
Windows 2000:dejar 256MB para el SO



Vale, vale, seguro que lo habéis pillado y esa "reparametrización" ¿Cómo lo hago?
Puede hacerse o bien en la maquina o bien en la ejecución yo os rcomiendo la segunda pues asi es solo para dicha ejecucion puntual:

Recordad o editad el bat que os deje para los que os daba problemas en windows, contenía la linea:
  • java -jar elnombredelprograma.jar

Se trata de modificar esta línea en el bat en windows o al comandarla en linux tal que, por ejemplo, podria dejar de mi Giga dedicados a la ejecucion 512 Mb:

  • java -Xms512Mb -Xms512Mb -jar elnombredelprograma.jar
Con esto ya he alcanzado el 150000000 sin problemas.

Y se queda la cosa en ir probando.



Bueno y con esto, por hoy.... ya sabéis ….
Por “su puesto” : !Sed buenos!

martes, 26 de abril de 2011

Otro inciso : 115; (Proyecto: Informatizar un problema matemático de primaria, Divisores (5 de10)

De verdad, perdonad el retraso pero me he tomado estos días de puente  para ordenar la casa. Aun queda pero hoy vuelvo a la rutina con el blog y el resto se irá llevando sobre la marcha por lo menos hasta que aparezca curro.
115 visitas en la estadística del mes , veo hoy con orgullo: entre España, Estados Unidos, México, Corea del Sur y Polonia.

  • Respecto a Eclipse: mañana toca abrirlo y hacerme con él desde mi Ubuntu.
  • Respecto a nuestro análisis y diseño del programa: lo reciclaré en un pdf de documentación final por si alguien se perdió.

Por último, recuerdo que el Domingo de Resurrección me vino al aire una pregunta :
"¿Cuál es el rango (de dónde a dónde) de naturales que vamos a admitir?"

Y es que se me olvidó deciros que trabajaremos con los primos que conseguí con el algoritmo que comentamos en facebook en otoño es decir que tendremos, con unas pequeñas modificaciones, en el programita que os deje  en:

Enlace para descargar el jar de otoño de números primos contenidos

un fichero con  los primos contenidos entre el 1 y 100000000.
¿Recordáis que os indiqué que: íbamos a considerar que el conjunto de naturales no era infinito?
Evidentemente  se debe a que, únicamente, vamos a disponer  de un número limitado de primos por ello la pregunta es (a ver si alguno se ha coscado) que valor máximo podremos meter como origen para la descomposición , asegurándonos de que los valores devueltos son primos y ciertos?
Pista: Pensad que solo tuviéramos los primos contenidos entre el uno y el 10 (¿Qué valor máximo permitiríamos?) luego trasladad el razonamiento a los máximos que os he dado.
Espero vuestros comentarios respuesta.

Mientras, ya sabéis: !Sed buenos!

 





miércoles, 20 de abril de 2011

Proyecto: Informatizar un problema matemático de primaria (4 de10)



Bueno, aquí va el dibujo al que me ha llevado la idea peregrina...  creo que con la información aportada hasta ahora , ya puedo abrir Eclipse y enmarranar; es decir que, podemos pasar a implementar.

Evidentemente a la hora de implementar nos va a tocar jugar con rangos, pues, hablar de cardinalidad de conjunto Potencia puede acarrearnos tratar , en casos extremos de números "muchisísimo grandes" pero , esas consideraciones las iremos viendo en la siguiente FASE.

martes, 19 de abril de 2011

Proyecto: Informatizar un problema matemático de primaria, Divisores (3 de 10)

Bueno... estábamos entrando en nuestra fase de diseño o, visto de otro modo, cómo íbamos a resolver algunas cosas.
Ya habíamos visto por encima el tema de la descomposición factorial y ,ahora, tocaba enfrentarse al tema del conjunto potencia.

!Jodo petaca! Que decimos aquí ...
Parece ser que, desarrollar una función para que nos devuelva todos los resultados de un conjunto potencia requiere, sí o sí, de la técnica de recursividad... o por lo menos eso entredeja ver, la implementación en lenguaje Pyton del enlace a Wikipedia que os comenté.

Google: Apariciones virgen


Pensando (ya sabéis que la Virgen , si uno le da muchas vueltas a un tema,  puede aparecer, y  siempre de la forma más insospechada) , he caído en la cuenta de dos cosas: la cardinalidad (número de elementos) del conjunto Potencia es siempre 2 elevado a los elementos del conjunto origen, y la segunda, las tablas de verdad  con las que verificaba en lógica matemática , emplean unos y ceros, siguiendo el hilo de dichas visiones recuerdo en la asignatura de primero de  fundamentos informáticos que sobre un tipo conjunto podía saberse si un elemento está o no y, todo ello me ha llevado a una idea peregrina que expondré más adelante.

Ahora, me centraré en la recursividad expuesta en la Wikipedia.
  Creo recordar , porque tras unos años sin tocarla y los “descolocos” de cabeza que me ha tocado lidiar,  que está técnica “matemática” para diseñar la solución de un problema , requiere que el problema puede ir descomponiéndose en problemas del mismo tipo pero de “envergadura” menor.
Este proceso de descomposición llega a un caso o problema “mínimo” que nos da una solución y a partir de ahí reconstruimos la descomposición hasta llegar a la solución.

blogs.rpp.com.pe/hombredefamilia/2009/08/10



Así en plan Adriá.... construcciones , deconstrucciones, reconstrucciones y tal.









El ejemplo más típico para ilustrar la recursividad es hablar del factorial en matemáticas.
5!=120 = 5*4*3*2*1
Y es que, el cálculo de un factorial de un natural consiste en multiplicar dicho natural por todos sus menores hasta uno.
Así pues podemos decir que:
5!= 5* 4!
Y traducirlo de una forma sistemática a:
funcion Factorial (entra un X natural) sale un solución Y natural---->
Si X=1---> Y=1
Sino Y=X* Factorial (X-1)
devuelve  Y
fin funcion

Veamos el ejemplo con el 4
funcion Factorial (4)=4*(funcion Factorial (3))= 4*(3*funcion Factorial (2))= 4*(3*(2*funcion Factorial(1)))
Llegado al punto en que el problema es mínimo y nos dan solución para ese mínimo, vamos a contruir la solución del problema inicial
funcion Factorial (4)=4*(funcion Factorial (3))= 4*(3*funcion Factorial (2))= 4*(3*(2*(1)))=24


Esta técnica dotada de reglas matemáticas puede usarse para diseñar algoritmos iterativos. Como ha hecho el ínclito al implementar la solución en Pyton al problema de hallar conjuntos Potencia.

Él ha expuesto lo siguiente, (sigo sin saber Pyton) así que si me equivoco corregidme:

def addTo(e, t):
        for s in t:
                s += [e]
        return t


Bien, aquí, él ha dicho: "creo un procedimiento para que cuando me den un elemento y una estructura de elementos añada dicho elemento a cada uno de los elementos de la estructura".
Y a continuación expone la recursividad:

def powerSet(a_set):
        if not a_set: return [[]]
        e = a_set[0]
        t = a_set[1:]
        return powerSet(t) + addTo(e, powerSet(t))


 Veamos que si funciona:
Tomemos el Conjunto Q = {a,b,c}
Y operemos como haría el ordenador:
1.- powerSet(Q)----> e={a}; t1={b,c}; devuelve powerSet(t1) + addTo ({a}, powerSet(t1))--->
Ahora comenzamos nuestro viaje de descomposición del problema
     2.-       powerSet(t1)----> e={b}; t2={c};devuelve powerSet(t2) + addTo ({b}, powerSet(t2))--->
Seguimos pues aun no hemos encontrado mínimo
          3.-    powerSet(t2)----> e={c}; t3={conjunto-vacío};devuelve powerSet(t3) + addTo ({c}, powerSet(t3))--->
    Recordemos de su código que había dicho: “if not a_set: return [[]]” es decir si no hay conjunto devuelveme []. Con lo que ya hemos llegado a mínimo , ahora reconstruimos la solución desde el nivel inferior al inicial.
      3.-   powerSet(t2)<---- {[]} ,{c}
     2.-     powerSet(t1)<---- {[]} ,{c} , {b}, {b,c}
    1.-     powerSet(Q)<---- {[]} ,{c}, {b},{b,c} , {a}, {a,c}, {a,b}, {a,b,c}

Efectivamente, como vemos, se cumple.






Google: "Guías de burro
   Pero chico,  ya que me ha venido semejante idea,   dejadme que la exponga.
Sabemos que , en el caso de que sea primo el número inicial X , su descomposición arrojará dos factores … para cualquier otro caso, más.
Si yo tengo 3 factores el conjunto potencia resultará de 8 elementos. Si recordamos las tablas de verdad  para 3 proposiciones había que considerar 8 casos , {0,0,0} , {0,0,1}, {0,1,0},{0,1,1}, {1,0,0} , …...
Si identificamos al 0 con que, el factor que considero, no está y  el 1 que está. Creo que hemos salvado el escollo...


Google: Evolución






Me pongo a hacer los dibujos ilustrativos y os cuento más tarde.

Ya sabéis, mientras, !Sed buenos!

lunes, 18 de abril de 2011

Proyecto: Informatizar un problema matemático de primaria, Divisores (2 de 10)

Bueno, estábamos saliendo del análisis del problema... habíamos visto que, hacía falta, dado un natural,  hallar su descomposición factorial y con ella establecer un conjunto potencia....
Evidentemente, sería de gran ayuda contar con la colección de primos, hecho que , como ya vimos en Facebook hará unos cuantos meses, tenemos, Así que, por ahora, no tocaremos más este tema.



Hoy, solamente, me centraré, ya puesto en informática "pura y dura",  en el problema de descomponer factorialmente un natural.

Desde una óptica recursiva, el proceso, lo afrontaré como en el dibujo que os expongo. (Por cierto , no me deja subir formato .odg, como imagen, así que la tardanza se ha debido a dar con como convertir .odg a otros formatos , resultando al final una perogrullada pero... !Con la excursión se aprende!)

domingo, 17 de abril de 2011

Proyecto: Informatizar un problema matemático de primaria, Divisores (1 de10)


 Fase 0

No quiero entrar en el contexto por que “sarpullido” me sale.
Indicar, para que nadie se escandalice, que a efectos prácticos para estos comienzos voy a considerar el conjunto de números naturales como un conjunto finito... 
Sí, ya sé que no lo es  pero, antes de meternos en la matemáticas de hablar con Dios, prima el realizar un programa que de solución a un problema al que se recurre mucho en estás matemáticas de LOGSE que a muchos infantes les toca vivir...

El problema acucia a muchos infantes que cursan primaria. Y viene cuando se enfrentan a la pregunta:
De google: "Cara de haba"

'Dado un número X' (X, suele ser tanto mayor, cuanto más elevado es el curso y es un natural que, puede o no, ser primo)' , di todos los naturales divisores del mismo.



Ahí , la madre del Cordero... No indican que dichos divisores deban ser primos y , por tanto, el problema se convierte en un problema complejo que debe resolverese en varias partes.

1.- Hallar La descomposición factorial de X
2.- “Combinarlos”, (todos no, más adelante desarrollaré esto porque tiene su miga), para obtener todos los divisores naturales que, en realidad, al dividir a X producirán un resto 0.



Intentaré, con el siguiente post, ir comentando cómo realizar la fase de análisis informática para dar solución a dicha pregunta.


Fase inicial: Recojo de datos , diccionario , entrevistas , documentación, y tal y tal....

  • Primo: un número natural, X, que es divisible sólo por si mismo y por 1.
  • Divisible: Se dice que un número X, es divisible por otro, Y, cuando al dividir X por Y el resto es 0.
  • Dividir X por Y (ojo esto pues cara a computar debe ser así): Restar a X ún numero de veces, Z, el número Y tal que: X= Z*Y +r , y además , 0<=r<Y. Esta coletilla final nos asegura que hemos llevado la division hasta el final , pues sin ella también podriamos decir que 60 DIV 2= (28*2)+4, hecho que no nos interesa en el mundo informático.
  • Descomposición factorial de X: Muestra de X como el producto resultante de multiplicar los números primos divisores de X cuyo resto sea 0 y tantas veces como lo hagan. Con esta definición acabamos de asegurarnos de que la descomposición de 40 no sea 1*5*2 sino 1*5*2*2*2.
  • Raíz cuadrada de un número X>=0: Aquel número Y, tal que X=Y*Y.
  • Conjunto: Colección de elementos.
  • Conjunto “Descomposición factorial de X”: Es el conjunto formado al tomar como elementos cada uno de los factores (haya sido tomado ya o no) resultantes de la descomposición factorial de X. Así pues, el conjunto ,Q , 'Descomposicion factorial de 40' = {1,5,2,2,2}.
  • Conjunto Pontencia de un conjunto S : Conjunto que tiene por elementos todos los subconjuntos generables en S.
                        Por ejemplo, si S= {a, b, c} entonces el conjunto potencia de S es P(S) = {{ }, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}.
Podéis encontrar hacia donde quiero ir en :


¿Esto es de primaria?  Menudo lumbreras el que diseño los contenidos , me imagino que con esto quiso mediar los, al menos, dos años de retraso con la EGB que llevan... ,en fin que he dicho que no quería entrar al contexto..., prosigo con el análisis.

Para nuestro ejemplo, si S= {1,5,2,2,2} entonces el conjunto potencia de S es P(S) contendrá 2 elevado a 5 elemntos, esto es, 32 elementos.
Enumero: el conjunto vacío, 5 subconjuntos de 1 elemento, 10 subconjuntos de 2 elementos, 10 subconjuntos de 3 elementos, 5 subconjuntos de 4 elementos y un subconjunto de 5 elementos.




“Combinarlos”:
Una vez obtenido el conjunto descomposición factorial , realizado el conjunto potencia sobre él y desestimado ,de este último, el elemento conjunto vacío....
Sabemos que cada subconjunto contiene como elementos una colección de factores divisores de X.
El valor producido al multiplicar el valor numérico de dichos factores resultara ser un divisor de X.
Como tenemos podemos llegar a la solución … Claro, nos suje un problema y es que, por ejemplo veamoslo en X=40, no quedaría nada bien encontrar 31 valores a saber:
Los resultantes de los subconjuntos de 1 elemento = 1,5,2,2,2
Los resultantes de los subconjuntos de dos elementos=
{1,5}--->5; {1,2}--->2 ; {1,2}--->2 ; {1,2}--->2 ;
{5,2}--->10; {5,2}--->10; {5,2}--->10;
{2,2}--->4; {2,2}--->4;
{2,2}--->4

No cito más por que , ya habréis visto por dónde quiero ir….

Como se ve, hay muchos valores repetidos por lo tanto , solamente nos interesara mostrar , de los 31 resultados que se generarán con X=40 , los que tengan valores distintos; reduciendose el tema a , a saber :
1
2
4=2*2
5
8=2*2*2
10=2*5
20=2*2*5
40=2*2*2*5
Como se ve ostrar 31 resultados cuando de ellos solo 8 nos aportan la informacion requerida queda mal. Algo tendré que hacer al respecto. Pero eso ya no compete al análisis.




De google: 'Idea'

Termino esta fase inicial , añadiendo una observación bastante interesante que, aunque tampoco compete al análisis prefiero nombrarla ahora por tratarse de una pauta interesante que condicionará la producción que queremos realizar para hacerlo de una forma más eficiente:

Como todos recordamos, de cuando descomponiamos con papel y lápiz un numerito aplicabamos los criteros de divisibilidad al número X hasta que obteniamos divisibilidad por ese Y , empezabamos por el 2 (que si era par o impar), el 3 ( que si la suma...) , el 5 (que si terminaba en …), el 7, el 11 y el 13 y si ninguno daba pues tocaba en sexto dividir que si por 17 por 19, por 23, 29, y 31... depende cuan de rebuscado quisiera ponerlo el “ticher”. Si con 31 ya no daba nos dejaban decir que era primo pero, sólo porque asumiamos que el proceso era seguir dividiendo hasta llegar al mismo número si hiciera falta para decir la verdad...
Cuando encontrabamos un divisor dividiamos y repetiamos el proceso.

Ahora con un ordenador no podemos excusarnos en el 31 debemos ir hasta el final y decir si es uno primo . ¿A que llamamos final?


Os propongo la siguiente pauta:
Si tomamos la raiz entera de X , llamémosla W y probamos los primos divisores Z, tal que 1<Z<=W, si ninguno es divisor podemos decir que X es primo.
Es lógico, ¿No? , Sólo había que caer.


Me baso en lo siguiente:
Sea X un número no primo, y X >1.
SUpongamos que la descomposición factorial en primos nos da que X=1*a*b
Donde a y b cumplen que son primos , mayores que 1.
Luego a = X/b y b=X/a, y cuando a> la raiz cuadr5ada de x entonces b debera ser menor que la misma encontrándose la armonía en que X = raiz cuadrada de X* raiz cuadrada de X. Por tanto no trae cuenta buscar primos divisores más allá de la raiz natural de X.
Lo ilustro con el siguiente ejemplo:
X=35=1*5*7
La raiz natural de 35 son 5
Por ello antes de decir si 35 es primo o no , deberemos revisar los primos hasta el 5 inclusive si lo es.
2---> No
3----> No
5--->sí ---> Pues a descomponer toca. 35DIV5=7 (El 5 ya pasa a formar parte de la solución y ahora nos ponemos a trabajar con el resultado, 7, cuya raiz natural es 2).
2--->No ---> entonces el 7 es primo y lo añadinmos a la solución.
X=35=1*5*7

Otro ejemplo
X=551
La raiz natural X es 21
En 19 encontramos el divisor 551DIV19=29
La raiz natural de 29 es 5
2---> no , 3---> no, 5--> no es primo y por tanto 551=1*19*29

Por tanto X= 83 ¿Es primo?
Veamos, la raiz de X es 9
Pruebo divisores primos hasta 9:
2---> No, 3---> No, 5---> No, 7--->No
Luego sí 83 es primo.

Véis? !Acabamos de ahorrarnos muchísimos intentos de encontrar divisores primos!


Un último ejemplo, para que veáis que la idea funciona para cualquier numero, tomemos el 1102,
X=1102=1*2*19*29 . Veamoslo.
La raiz natural de 1102 es 33
Probamos con 2 y si -----> 1102 DIV 2 =551
La raiz de 551 (esto ya lo hemos visto antes así que todo queda ya visto).


Bueno, como véis dicha pauta nos ha ahorrado muchos, muchos , muchisimos intentos y probatinas a la hora de dar con los divisores.

Google: "That's all folks"


Hasta aquí el análisis del problema. Concluida la fase proxima entrada diseño.

viernes, 15 de abril de 2011

Cómo tocar particiones "delicadas" en windows.


Qué mejor forma de empezar que con un cómo.
 ¿Cómo hago para redimensionar particiones en mi Windows? … Existe un equipo de desarrolladores (sin ánimo de lucro) que llevan ya un tiempo realizando un proyecto en sourceforge: GParted

imagen sacada de google


La verdad es que funciona muy bien con particiones que previamente hayan sido tratadas con WindowsXP. En contra que, a día de hoy, aun no han aplicado un parche para poder operar con los “intrépidos” que sigan manteniendo Vista o usan Windows7. 

GParted  no os debe dar problemas si queréis redimensionar la partición primaria sobre la que arranca vuestro sistema operativo !Sí, la primaria y activa, incluso aunque sea NTFS!

Se trata de una aplicación Linux Gnome  , a mi modo de ver, es la evolución de lo que hace 10 años, para 15, era el comando fdisk de DOS. La verdad es que lo consigue.

En este enlace os dejo una .ISO de la versión 0.8.0.5 para que, si queréis, os la descarguéis y la queméis obteniendo así el CD-Live :

http://sourceforge.net/projects/gparted/files/gparted-live-stable/0.8.0-5/gparted-live-0.8.0-5.iso/download



Aquí un  tutorial de como manejarlo:




Recordar que el manejo de particiones es un tema delicado... así que, si alguien se anima , y no las tiene todas consigo !Hagámelo saber para ampliarle la información!


CASO II :
imagen sacada de google
Tengo un sistema operativo windows posterior (Vista o 7)

1.- Vamos al Panel de Control y allí selecionamos Herramientas Administrativas. Hacemos doble click en Administracion de Equipos.

2.- Hacemos click en el menú izquierdo en 'Administración de Discos', y nos muestra los Discos que tenemos en el PC incluido el CD/DVD, con las particiones, las letras, el formato (NTSC o FAT), la capacidad, si es de sistema, si esta correcto, si contiene el archivo de paginación, etc.

3.- Haciendo click en el disco donde nos interese hacer la partición  y haciendo click de nuevo con el botón derecho del ratón, aparece un menú que nos permite trabajar en el disco. 
Hacer click en Reducir Volumen y el sistema revisara el espacio disponible para la reducción de esta partición.
Luego nos muestra un cuadro con la disponibilidad de espacio en este volumen. Nos informa del espacio antes de la reducción, espacio para reducir, y tamaño posterior si escogemos la reducción que aparece por defecto.

4.- Seleccionamos el tamaño que daremos a este nuevo disco en Mb. Ahora hacemos click en el botón Reducir y ahora aparecerá esta partición con la leyenda: No asignado.
Haciendo click dentro de esta partición (aparece rayada) y haciendo de nuevo click con el botón derecho del ratón, aparece un menú, y haciendo click en Nuevo volumen simple, aparece una ventana con un ayudante que nos permite dar el tamaño que queramos a la partición (observar que podríamos crear más particiones en este espacio).
Luego nos permite asigna la letra del volumen que vamos a crear (podemos seleccionarla entre las disponibles).

5.- Hacemos click en Siguiente y nos muestra otra ventana con el formato que queremos dar a esta partición (NTSC o FAT 32) y "formateo" rápido de la partición y la etiqueta de volumen (New volumen, por defecto) que queremos dar a la nueva partición. 
Hacemos click en Siguiente y aparece una ventana resumen, con los datos del volumen a crear. Hacemos click en Finalizar y el volumen se crea y formatea según nuestra selección. Sobra decir que podremos borrar la partición y reasignar los volúmenes siguiendo los pasos con esta herramienta de gestión de discos.....

Bueno , primera entrada concluida. Ya, roto el hielo, espero vuestros coments.