DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso 2003-04 1 Modelos y Técnicas para Problemas de Satisfacción de Restricciones.

Slides:



Advertisements
Presentaciones similares
Ing. Victor Jaime Polo Romero
Advertisements

INGENIERIA INFORMATICA Y BUSQUEDAS CON ADVERSARIOS
Introducción a la Investigación de Operaciones
Búsqueda en árboles de juego
Introducción a la Estadística
Ejemplo 2: Reparto de 3 objetos indivisibles.
Diseño y análisis de algoritmos
Inteligenica Artificial I Alejandro Permingeat Inteligencia Artificial de Russell y Norving 1° edición 1996 Parte II Capítulo V.
Modelos de Variable Dependiente Binaria -Logit y Probit-
Inteligencia Artificial Búsqueda informada y exploración
UNIDAD I MODELOS Y TOMA DE DECISIONES
Problemas de Satisfacción de Restricciones (CSP)
Inteligencia Artificial Búsqueda informada y exploración
Solución de problemas por búsqueda inteligente
Inteligencia Artificial Resolver problemas mediante búsqueda
SATISFACCION DE RESTRICCIONES Sección 1-3
Inteligencia Artificial Resolver problemas mediante búsqueda
INTELIGENCIA DE NEGOCIOS
MÉTODOS DE BÚSQUEDA DE ARBOLES Y OPTIMIZACIÓN
Complejidad Problemas NP-Completos
Tema 2: Métodos de ajuste
 La resolución de problemas algorítmicos no solamente implica que los informáticos sepan programar sino necesitan de otras habilidades como tener una.
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería – Maestría/Doctorado.
Relajación y Procesamiento híbrido de restricciones Diferentes técnicas de relajación Algunas técnicas híbridas populares.
DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Capítulo 4: CSP Distribuido María Isabel Alfonso Galipienso.
Universidad de los Andes-CODENSA
INTELIGENCIA ARTIFICIAL.
Optimización Combinatoria usando Algoritmos Evolucionistas Problemas de Optimización. Idea: Encontrar una solución "factible" y "óptima" de acuerdo a algún.
EL PODER DE SOLVER.
Resolución de Problemas Método Simplex
Optimización, Búsqueda Heurística
Manejo de conflictos intergrupales

Diseño y análisis de algoritmos
DESARROLLO MODELO RESOLUCION MODELO ¿VALIDA? MODELO MODIFICADO IMPLEMENTACION DEFINICION DEL PROBLEMA t.
Toma de Decisiones Gerenciales
ALGORITMOS APROXIMADOS
Diseño y análisis de algoritmos
(Organización y Manejo de Archivos)
CONCEPTOS INTRODUCTORIOS SICI-3011 Editado por el Prof. Miguel Vélez Rubio Agosto 2007 Versión original del Prof. Nelliud D. Torres Junio/2003.
Combinación de Clasificadores
complejidad de un problema.
METODOS DE BUSQUEDA INFORMADOS CAPITULO 5
DISTRIBUCIONES DE MUESTREO
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Inteligencia Artificial
1 Introducción a la Computación para Biólogos, Bioquímicos, Médicos, etc.
Relajación y procesamiento híbrido de restricciones Diferentes técnicas de relajación Algunas técnicas híbridas populares.
Capacidad de Proceso.
Una introducción a la computación evolutiva
Modelos Cuantitativos
Repaso de clase anterior
PROBLEMAS DE SATISFACCIÓN DE RESTRICCIONES
1 Problemas de decisión Tipo particular de problemas de optimización Sistemas que evolucionan con el tiempo Se toman decisiones en momentos sucesivos de.
Parte I. Estructuras de Datos.
SISTEMAS EXPERTOS (SE) Coronel Jaramillo Ricardo
Optimización Combinatoria y Grafos Búsqueda Tabú
Sistemas Basados en Reglas
Son sistemas de computación que emulan la habilidad de tomar decisiones de un especialista humano en un dominio restringido. Son programas que tienen.
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Método Simplex Es un procedimiento sistemático y eficiente para encontrar y probar soluciones situadas en los puntos extremos de la región de soluciones.
Resolución Gráfica de PPL
Resolución de Problemas Método Gráfico
Evaluación Económica Financiera de Proyectos
POR: ILSE MARÍA OVALLE ROBLES MONTSERRAT BARRÓN MÉTODOS DE CONTEO.
ECACEN UNIDAD 2. LA ESTRATEGIA ORGANIZACIONAL Curso académico JUEGO GERENCIAL Cód Programa Administración de Empresas Bogotá, 2015 IR AL INICIO.
Fundamentos de Computación
Método Simplex Es un procedimiento sistemático y eficiente para encontrar y probar soluciones situadas en los puntos extremos de la región de soluciones.
Universidad Fermín Toro Vice Rectorado Académico Facultad de Ciencias Económicas y Sociales Escuela de Administración Lizmer, Arrieche C.I. No
Transcripción de la presentación:

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Modelos y Técnicas para Problemas de Satisfacción de Restricciones María Isabel Alfonso Galipienso Miguel Ángel Salido Gregorio

2 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Técnicas híbridas y de preproceso –Algoritmos híbridos:  forward checking  Look ahead –Técnicas heurísticas de preproceso:  Ordenación de valores  Ordenación de variables  Ordenación de restricciones Sesiones teóricas (I)

3 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Un Problema de Satisfacción de Restricciones (CSP) se puede representar como: Un Conjunto de Variables: X={x 1, x 2,..., x n } Dominios de Interpretación ( D = ) para las variables: x i  D i Un Conjunto de Restricciones entre las variables: C ={c 1, c 2,..., c m } Definición de CSP

4 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso MODELACIÓN CSP Variables Dominios Restricciones(EXPRESIVIDAD) 1) RESOLUCIÓN CSP Técnicas Resolución CSP(EFICICIENCIA) 2) Modelización CSP

5 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso s e n d + m o r e m o n e y Variables: s,e,n,d,m,o,r,y Dominios: s,e,n,d,m,o,r,y:{0,…,9} Restricciones Variables: s, e, n, d, m, o, r, y Dominios: s, e, n, d, m, o, r,y : {0,…,9} Restricciones: Todas Diferentes, 10 3 (s+m) (e+o) + 10(n+r) + d + e= 10 4 m o n + 10e+y Especificación CSP Modelización 1

6 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Variables: s, e, n, d, m, o, r, y Dominios: s, e, n, d, m, o, r,y : {0,…,9} Restricciones: s  e, s  n, s  d, s  m, s  o, s  r, s  y, e  n, e  d, e  m,….. d+e = y+10c1 c 1 +n+r = e+10c 2 c 2 +e+o = n+10c 3 c 3 +s+m = 10m+o Modelización 2 s e n d + m o r e m o n e y

7 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Objetivos  Consistencia  Consistencia del problema (existe solución). soluciones  Obtener una o todas las soluciones del problema.  Obtener los dominios mínimos. optimiza  La solución que optimiza una función objetivo o multi-objetivo.

8 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Objetivo de un CSP: Tiene solución?  Consistencia. Obtener una solución. Obtener todas las soluciones. Obtener una solución óptima, o al menos una buena solución, medida por alguna función objetivo. Algoritmos para CSP: Técnicas de Búsqueda (Algoritmos CSP): Obtienen una solución, guiados por heurísticas. Técnicas Inferenciales (Algoritmos de propagación): Obtienen las consecuencias de las restricciones explícitamente conocidas del problema. Objetivos

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Algoritmos basados en Backtracking Chronological Backtracking Backjumping

10 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Ejemplo: 4-reinas: Chronological Backtracking z z c(z1,z2).... x c(z1,z2).... x 2 x 3 v z c(z1,z3) x c(z1,z3) x 2 v c(z2,z3) x c(z2,z3) x 3 v x 4 v x 4 v 1 x 2 v v z c(z1,z4) x v v x c(z1,z4) x v v x c(z2,z4) x v c(z2,z4) x v c(z3,z4) x c(z3,z4) x

11 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso z z c(z1,z2).... v c(z1,z2).... v 2 v 3 v z3.... c(z2,z3).... c(z2,z3).... c(z1,z3).. c(z1,z3).. 4 x z4... c(z1,z4).. c(z1,z4).. c(z2,z4)... c(z2,z4)... c(z3,z4) c(z3,z4) x2vv3x4vx1x2vv3x4vx1x2vv3x4vv 1x2vx3x4x 1x2vvv3x4x1x2vx3x4x1x2vx3x4x Backjump Backjumping

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Algoritmos híbridos Diferentes técnicas de relajación Nodo consistencia Forward checking Lookahead

13 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Ejemplo de estudio  4 familias A, B, C y D viven en casas próximas cuyos números son: 1, 2, 3 y 4. – D vive en una casa con nemor número que B, – B vive junto a A en una casa con mayor número, – Hay al menos una casa entre B y C, – D no vive en una casa cuyo número es 2, – C no vive en una casa cuyo número es 4.  Qué familia vive en cada casa?  El puzzle de las 4 casas

14 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Variables: A, B, C y D  Dominios: d A = d B = d C = d D = { 1, 2, 3, 4}  Restricciones: – unarias:  c(C) = C  4  c(D) = D  2 – binarias:  c(A,B) = B = A + 1  c(B,D) = D  B  c(B,C) = |B - C|  1  c(A,C) = A  C  c(A,D) = A  D  c(C,D) = C  D D vive en una casa con nemor número que B, B vive junto a A en una casa con mayor número, Hay al menos una casa entre B y C, D no vive en una casa cuyo número es 2, C no vive en una casa cuyo número es 4. Representación:

15 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Las restricciones uniarias se eliminan reduciendo los dominios de las variables:  1-consistencia – (solamente hay involucrada 1 variable)  c(C) = C  4  c(D) = D  2 d C = { 1, 2, 3} d D = { 1, 3, 4} D vive en una casa con nemor número que B, B vive junto a A en una casa con mayor número, Hay al menos una casa entre B y C, D no vive en una casa cuyo número es 2, C no vive en una casa cuyo número es 4. Nodo-consistencia:

16 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso La red de restricciones:AB DC B = A + 1 A  C D  BD  B A  D |B - C|  1 C  D { 1, 2, 3, 4} { 1, 2, 3}{ 1, 3, 4}

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Técnicas Híbridas Forward Checking Lookahead

18 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Forward Checking:  Asumimos que fijamos el valor para 1 variable zi: zi = a  Forward Checking(zi) = – activa cada restricción c(zi, zj) o c(zj, zi) una vez para eliminar los valores inconsistentes para zi = a AB DC B = A + 1 A  C D  BD  B A  D |B - C|  1 C  D {2} { 1, 2, 3, 4} { 1, 2, 3}{ 1, 3, 4}  En nuestro ejemplo: asumimos A = 2 :

19 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Forward checking: consistencia débil  Requiere que una variable ya esté instanciada – se sugiere usar en combinación con backtracking AB DC B = A + 1 A  C D  BD  B A  D |B - C|  1 C  D {2} { 1, 2, 3, 4} { 1, 2, 3}{ 1, 3, 4}  No produce un estado consistente – no se produce la relajación completa

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Look ahead Un método de relajación más potente

21 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Look ahead:  Look Ahead = – activa cada restricción c(zi, zj) exactamente una vez para eliminar los valores inconsistentes de los dominios Di y Dj.  En nuestro ejemplo: AB DC B = A + 1 A  C D  BD  B A  D |B - C|  1 C  D { 1, 2, 3, 4} { 1, 2, 3}{ 1, 3, 4} { 1, 2, 3, 4}

22 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Continuación del Ejemplo: AB DC B = A + 1 A  C D  BD  B A  D |B - C|  1 C  D { 2, 3, 4} { 1, 2, 3}{ 1, 3, 4} { 1, 2, 3}  Las otras tres restricciones:

23 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Look ahead: resultado final: AB DC B = A + 1 A  C D  BD  B A  D |B - C|  1 C  D { 3, 4} { 1, 2}{ 1, 3} { 1, 2, 3}  Todavia no produce un estado consistente – no se lleva a cabo toda la relajación  El resultado puede depender del orden en el que se han tratado las restricciones. – Eliminar algunos valores antes, puede permitir encontrar otras inconsistencias

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Técnicas híbridas combinadas Combina el poder de backtracking con las técnicas anteriores

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Forward checking Backtracking combinado con Forward Check

26 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Forward checking: Forward Checking: Execute Standard Backtracking After each assignment of a After each assignment of a value to a variable zi DO value to a variable zi DO Forward Check(zi) BUT

27 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso A Forward checking con BTB2 AB CD{1}{1,2,3,4}{1,2,3} {1,3,4} B=A+1 ADADADAD ACACACAC AB CD{1}{2}{2,3} {3,4} |B-C|  1 D BD BD BD B fallo AB CD{2}{1,2,3,4}{1,2,3} {1,3,4} B=A+1 ADADADAD ACACACAC 2 B3 AB CD{2}{3}{1,3} {1,3,4} D BD BD BD B C1 AB C D{4}{3}{1}{1} CDCDCDCD fallo AB CD{3}{1,2,3,4}{1,2,3} {1,3,4} B=A+1 ADADADAD ACACACAC 3 B4 AB CD{3}{4}{1,2} {1,4} D BD BD BD B AB C D{3}{4}{1}{1} CDCDCDCD AB C D{3}{4}{2}{1} CDCDCDCD 1C 2falloéxito

DOCTORADO Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Lookahead checking Backtracking combinado con Look ahead

29 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Lookahead checking: Execute Standard Backtracking Look Ahead Check BUT Look Ahead Check ; Lookahead Checking: After each assignment of a After each assignment of a value to some variable DO value to some variable DO

30 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Lookahead checking at work AB C D{1,2,3,4}{1,2,3,4}{1,2,3}{1,3,4} B=A+1 ADADADAD ACACACAC D BD BD BD B |B-C|  1 CDCDCDCD AB CD{1}{3,4}{1,2} {1,3} B=A+1 fallo AB C D{2}{3,4}{1,2}{1,3} B=A+1 ADADADAD ACACACAC D BD BD BD B CDCDCDCD fallo AB C D{3}{3,4}{1,2}{1,3} B=A+1 ADADADAD ACACACAC D BD BD BD B CDCDCDCD AB C D{3}{4}{2}{1} D BD BD BD B CDCDCDCD AB C D{3}{4}{2}{1} CDCDCDCD 1A 2 3 B4 C2 éxito

31 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso ¿Cual es mejor?  Forward checking: – lleva a cabo menos chequeos de consistencia – tiene mas remificación  más próximo a backtracking  Lookahead checking: – gasta mas tiempo en la consistencia – trata menos valores alternativos  Generalmente: forward checking is más útil  Para problemas altamente restringidos: – Lookahead es necesario para podar mas ramas.

32 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso –Técnicas heurísticas de preproceso:  Ordenación de valores  Ordenación de variables  Ordenación de restricciones Índice

33 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Ordenación de Variables (importante) –Qué variable será la próxima a ramificar  Ordenación de Valores (todavía no tan importante) –Seleccionada una variable, en qué orden asignar sus valores  Ordenación de restricciones (no tan importante) –En qué orden propagar las restricciones –La más probable que falle o la de propagación más barata Generalidades

34 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Ordenación de Variables n La idea de la ordenación de variables es clasificar las variables de la más restringida a la menos restringida. En general, las variables deberían ser instanciadas en orden creciente a la talla de los dominios. n Esta ordenación se puede realizar estáticamente al inicio de la búsqueda o dinámicamente reordenando las variables restantes cada vez que una variable es asignada.

35 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Experimentos y análisis de varios investigadores han demostrado que el orden en el cual se eligen las variables para la instanciación pueden suponer un impacto sustancial en la complejidad de la búsqueda. Existen dos tipos de ordenación de variables Ordenación estática, en la cual el orden de las variables se especifica al principio de la búsqueda y este no cambia. Ordenación dinámica, en el cual la elección de la próxima variable a ser instanciada depende del estado actual de la búsqueda. La ordenación dinámica no es siempre posible en todos los algoritmos. Por ejemplo, con el backtracking cronológico no hay información extra disponible durante la búsqueda que se pueda utilizar para tomar una elección diferente a de la ordenación inicial. Ordenación de Variables

36 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Con forward checking, el estado actual incluye los dominios de las variables, ya que han sido podados por las instanciaciónes realizadas anteriormente y por lo tanto es posible llevar a cabo una ordenación para seleccionar la próxima variable a instanciar.  Se han analizado varias heurísticas de ordenación de variables. La más común se basa en el principio "first-fail" que se puede explicar como: “Para tener éxito, probar primero donde es más probable que falle." Ordenación de Variables

37 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  La variables con menos alternativas posibles es seleccionada para la instanciación.  El orden de la instanciación de las variables es distinto para las distintas ramas del árbol de búsqueda y se determina de forma dinámica  El principio FF puede parecer desencaminado, porque nuestro objetivo no es fallar. La razón es que si la solución parcial no nos lleva a una solución completa, entonces cuanto antes lo descubramos mejor.  Sin embargo, si la solución parcial nos lleva a una solución completa, entonces las variables restantes deben ser instanciadas y aquella con el dominio más pequeño es más difícil encontrarle un valor, ya que instanciar las otras variables hace que se reduzca aun más su dominio y nos lleve a la inconsistencia. Así el principio anterior se puede modificar como:  “Tratar con los casos mas difíciles primero: ellos se harán cada vez más difíciles si los aplazamos” Ordenación de Variables (ff)

38 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Otra heuristica que se aplica cuando todas las variables tienen el mismo número de valores es elegir la variable que participa en más restricciones (en la ausencia de información más específica sobre qué restricciones son más difíciles de satisfacer, por ejemplo). Esta heuristica sigue tambien el principio de tratar con los casos más duros primero.  Existe otra heuristica para la ordenación estática de variables que es apropiada para el backtracking cronológico. Esta heuristica dice: seleccionar la variable que tenga el mayor número de restricciones con las variables pasadas. Ordenación de Variables

39 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Una vez que se ha tomado la decisión de instanciar una variable, hay que asignarle uno de los posibles valores. De nuevo el orden en el cual se consideran estos valores tiene un impacto substancial en tiempo para encontrar la primera solución.  Sin embargo si se requiere encontrar todas las soluciones del problema, entonces la ordenación de valores es indiferente.  Una ordenación de valores diferente reestructurará las ramas que emanan de cada nodo del árbol de la búsqueda. Esto es una ventaja si nos asegura que la rama que nos lleva a una solución se explora antes que otras ramas que nos llevan a situaciones sin salida. Por ejemplo si el CSP tiene una solución y se selecciona un valor correcto para cada variable, entonces se puede encontrar una solución sin necesidad de backtracking. Ordenación de Valores

40 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Supongamos que hemos seleccionado una variable para instanciar: cómo deberiamos seleccionar el valor de dicha variable?  Puede que ningún valor sea posible, en ese caso, cada valor de la variable actual tendrá que ser considerado y el order no importa.  Por el contrario, si podemos encontrar una solución completa basada en las instanciaciones pasadas, nosotros queremos seleccionar un valor, el cual sea más probable de tener éxito y menos probable de generar un conflicto  Por lo tanto se aplica el principio de “primero el exitioso" Ordenación de Valores

41 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Otra heurística es preferir el valor (de los disponibles) que nos permita resolver de una forma más fácil el CSP. –Esto requiere estimar la dificultad de resolver el CSP.  Una posible heurística es preferir aquellos valores que maximizan el número de opciones disponibles. –Sin embargo esto requiere un coste adicional. Ordenación de Valores

42 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso  Poco trabajo se ha realizado sobre ordenación de restricciones.  La idea se basa en ordenar las restricciones desde la más restrictiva a la menos restrictiva de forma que podemos lo antes posible las ramas del árbol de búsqueda.  La más común se basa en el principio "first-fail“: “Para tener éxito, probar primero donde es más probable que falle." Ordenación de Restricciones

43 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Ordenación de Restricciones

44 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Ordenación de Restricciones

45 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Valor de la evaluación Ordenación de Restricciones

46 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Ordenación de Restricciones

47 Departamento Ciencia de la Computación e Inteligencia Artificial. Curso Generate & Test Three tasks: x 1, x 2, x 3 Three resources:1,2,3 d 1 :{1,2,3} d 2 :{1,2} d 3 :{1,2,3} Constraints: c 1 : x 1 ≠ x 2 c 2 : x 2 = x 3 Valid tuples: c 1 : (1,2,-),(2,1,-)(3,1,-)(3,2,-) c 2 : (-,1,1),(-,2,2) Natural orderOrdered tuplesc1c1 c2c2 c2c2 c1c1 (1,1,1)N-YN (1,1,2)N-N- (1,1,3)N-N- (1,2,1)YNN- (1,2,2)YYYY (1,2,3)YNN- (2,1,1)YYYY (2,1,2)YNN- (2,1,3)YNN- (2,2,1)N-N- (2,2,2)N-YN (2,2,3)N-N- (3,1,1)YYYY (3,1,2)YNN- (3,1,3)YNN- (3,2,1)YNN- (3,2,2)YYYY (3,2,3)YNN- (1,2,2) (2,1,1) (3,1,1) (3,2,2)