Hubo algunas preguntas que respondí erróneamente con confianza mientras me preparaba para GATE. Y realmente no pude encontrar una razón por la cual está mal y cómo otra opción es correcta. Pero cuando entendí cada pregunta en la que me equivoqué, todas me dieron una nueva perspectiva o corrigieron algunas creencias.
Q1.
Identifique la traducción correcta en notación lógica de la siguiente afirmación. Algunos niños en la clase son más altos que todas las niñas.
Nota: tall (x, y) es verdadero si x es más alto que y
(a) (∃x) (niño (x) → (∀y) (niña (y) ∧ más alto (x, y)))
(b) (∃x) (niño (x) ∧ (∀y) (niña (y) ∧ más alto (x, y)))
(c) (∃x) (niño (x) → (∀y) (niña (y) → más alto (x, y)))
(d) (∃x) (niño (x) ∧ (∀y) (niña (y) → más alto (x, y)))
- ¿Qué reglas debe seguir la inteligencia artificial en el futuro?
- ¿Qué es un servidor de computadora?
- Me estoy graduando de un campo de entrenamiento de codificación, pero nunca he tomado una clase de CS. ¿Qué pasantías puedo solicitar este verano?
- Cómo diferenciarme de los demás en mi carrera de CS
- ¿Qué se necesita para crear una aplicación web de servicio como Care.com?
La respuesta es d. Explicación: Primero pensé que era (a), luego me corregí a (b). Es muy difícil explicar la lógica, aún así intentaré con un conjunto de ejemplos.
¿Por qué (a), (c) está mal? :
Toma niño1 (170 cm), niño2 (175 cm), niña1 (165 cm), niña2 (180 cm). Entonces claramente girl1 <boy1 <boy2 <girl2 es el orden wrt altura. Y la afirmación es falsa según este conjunto porque no puedes encontrar un niño que sea más alto que todas las chicas.
En esta lógica de predicado de segundo orden, estamos buscando algo como (∃x) (boy (x) → algo). Lo que significa que debe tener al menos un valor para la variable x (uno de b1, b2, g1, g2) que satisfaga boy (x) → algo. Espero que sepas que P → Q es verdadero o ambos son verdaderos o P es falso.
Así que básicamente intente x con b1, b2, g1 y g2. En cualquier caso, si da verdadero , todo es verdadero (porque está cerrado bajo There Exist).
cuando x = b1, boy (x) es True, por lo que debe verificar el resto.
cuando x = b2, boy (x) es True, por lo que debe verificar el resto.
cuando x = g1, boy (x) es Falso, entonces “boy (x) → algo” es verdadero.
¡Sí! encontramos un caso donde el “niño (x) → algo” da el valor de verdad Verdadero para un valor x válido.
Pero ya sabemos que LA DECLARACIÓN DADA ES FALSA según nuestro ejemplo. De hecho (a), (c) simplemente darán un valor de verdad Verdadero si hay al menos una niña en el grupo.
NOTA: (∃x) (f (x) → algo) generalmente no tiene ningún sentido, hasta que lo convierta al formato (∃x) (~ f (x) V algo) . Entonces, especialmente, si la conversión del lenguaje inglés a la lógica de predicados, la primera forma nunca aparece.
¿Por qué (b) está mal ?:
Entonces (∃x) (chico (x) ∧ algo) es la respuesta esperada. Porque esperamos que al menos un niño haga la afirmación verdadera.
Conjunto de ejemplos: niña1 (170cm), niño1 (175cm), niño2 (180cm). Entonces, la declaración en inglés dada es verdadera. Verifiquemos si (b) es verdadero o no.
mientras x = b1, y y = b2, la niña (b2) es Falsa, entonces (niña (y) ∧ algo) es Falso. Y como la segunda variable y se cierra en For All , este caso único de False conduce al fallo de x = b1.
mientras x = b2, y y = b1, la niña (b1) es Falsa, entonces (niña (y) ∧ algo) también es Falsa. Y a medida que la segunda variable y se cierra en For All , este caso único de False conduce a la falla de x = b2 también.
Entonces, la opción (b) da Falso siempre que el grupo contenga más de un Niño.
¿Por qué la opción (d) es correcta? Simplemente comprueba si existe algún niño. Si no existe, devuelve falso (que es correcto. Para que la oración en inglés dada sea verdadera, necesita al menos un niño). De lo contrario, verifique a todas las chicas (solo) si siempre es más alto.
“Existe x donde x es un niño Y ese niño es más alto que todos ‘y’ CUANDO y es una niña”.
Esta es la traducción correcta de (d) y es equivalente a una oración en inglés dada.
Q2
Considere el siguiente fragmento de código:
if (fork () == 0)
{a = a + 5; printf (“% d,% d \ n”, a, & a); }
más
{a = a-5; printf (“% d,% d \ n”, a, & a); }
Sean u, v los valores impresos por el proceso padre y x, y sean los valores impresos por el proceso hijo. ¿Cuál de los siguientes es cierto?
(a) u = x + 10 y v = y
(b) u = x + 10 y v ≠ y
(c) u + 10 = x y v = y
(d) u + 10 = x y v ≠ y
La respuesta es c. Pero yo creía que (d) es la respuesta. No podía aceptar el hecho de que incluso dos programas que se ejecutan simultáneamente pueden mostrar la misma dirección para sus variables, porque no era lo suficientemente profundo en conceptos de memoria virtual. Creí solo después de probarlo en una computadora.
Explicación: fork () devuelve 0 en el proceso secundario e ID del proceso secundario en el proceso primario.
En Child (x), a = a + 5
En Parent (u), a = a – 5;
Por lo tanto x = u + 10.
Las direcciones físicas de ‘a’ en padre e hijo deben ser diferentes. Pero nuestro programa accede a direcciones virtuales (suponiendo que estemos corriendo en un sistema operativo que usa memoria virtual). El proceso secundario obtiene una copia exacta del proceso primario y la dirección virtual de ‘a’ no cambia en el proceso secundario. Por lo tanto, obtenemos las mismas direcciones tanto en padre como en hijo.
Q3.
Un procesador utiliza direcciones físicas de 36 bits y direcciones virtuales de 32 bits, con un tamaño de marco de página de 4 Kbytes. Cada entrada de la tabla de páginas tiene un tamaño de 4 bytes. Se utiliza una tabla de página de tres niveles para la traducción de direcciones virtuales a físicas, donde la dirección virtual se usa de la siguiente manera
• Los bits 30-31 se usan para indexar en la tabla de la página de primer nivel
• Los bits 21-29 se usan para indexar en la tabla de la página de segundo nivel
• Los bits 12-20 se usan para indexar en la tabla de páginas del tercer nivel, y
• Los bits 0-11 se usan como desplazamiento dentro de la página
El número de bits requeridos para direccionar la siguiente tabla de página de nivel (o marco de página) en la entrada de la tabla de página de las tablas de página de primer, segundo y tercer nivel son respectivamente
(a) 20, 20 y 20
(b) 24, 24 y 24
(c) 24, 24 y 20
(d) 25, 25 y 24
La respuesta es b. Explicación: Créame, verá toneladas de sitios web argumentando que otras opciones son correctas. Pero si desea que los bits se usen para direccionar páginas del siguiente nivel de tabla de página / marco de página, necesitará la misma cantidad de bits para direccionar un marco de página en la memoria física. Porque, la dirección del marco de página de ‘páginas en la tabla de páginas del siguiente nivel, que se llevan a la memoria física’, siempre se almacena en cada entrada de la tabla de páginas. Por ejemplo: una entrada en la tabla de página de primer nivel (nivel más externo) contiene las direcciones físicas de los marcos de página, que contiene las páginas de la tabla de página de segundo nivel si ya está en la memoria (de lo contrario, la entrada se marca como no válida y creará una página señorita. Luego, la página requerida del PT de segundo nivel se lleva a un marco de página, actualice la entrada en la entrada de PT de primer nivel, luego solo vuelve a ser válida)
Entonces, dirección física de 36 bits y tamaño de página de 4KB. Significa que 12 bits son bits de desplazamiento de página y se necesitan descanso (24 bits) (junto con otros bits de información) en cada entrada de la tabla de páginas de cada nivel de la tabla de páginas.