Examen professionnel de vérification d'aptitude aux fonctions de programmeur. - Session Épreuve écrite INFORMATIQUE

Documents pareils
Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Coup de Projecteur sur les Réseaux de Neurones

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Optimisation de la compression fractale D images basée sur les réseaux de neurones

I. Introduction aux fonctions : les fonctions standards

1.6- Génération de nombres aléatoires

Application 1- VBA : Test de comportements d'investissements

L apprentissage automatique

Généralités sur le Langage Java et éléments syntaxiques.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours Informatique Master STEP

TESTS D'HYPOTHESES Etude d'un exemple

Druais Cédric École Polytechnique de Montréal. Résumé

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Programmation C++ (débutant)/instructions for, while et do...while

MODE OPERATOIRE OPENOFFICE BASE

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Cours d Informatique

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

LES GENERATEURS DE NOMBRES ALEATOIRES

Les structures. Chapitre 3

Algorithmique avec Algobox

Examen Médian - 1 heure 30

Cours d algorithmique pour la classe de 2nde

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

D.E.S.C.F - UV 1 - Module 8 Consolidation dans les groupes de sociétés. Corrigé - Cas IG/IP/MEE

Architecture des ordinateurs

Chapitre 6 Apprentissage des réseaux de neurones et régularisation

Pourquoi l apprentissage?

Bases de programmation. Cours 5. Structurer les données

Projet Active Object

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

4.2 Unités d enseignement du M1

Probabilités Loi binomiale Exercices corrigés

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Chapitre 2. Classes et objets

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Détection de la défaillance des entreprises tunisiennes par la régression logistique semi paramétrique et les réseaux de neurones

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

ACTIVITÉ DE PROGRAMMATION

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Les algorithmes de fouille de données

Initiation à la programmation en Python

SudoClick Reconnaissance de grilles de sudoku pour téléphones portables

Salle de technologie

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Annexe : La Programmation Informatique

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Algorithmique avec Algobox

Vers l'ordinateur quantique

Logiciel SCRATCH FICHE 02

Examen d informatique première session 2004


Satisfaction des stagiaires de BRUXELLES FORMATION Résultats 2013

à moyen Risque moyen Risq à élevé Risque élevé Risq e Risque faible à moyen Risq Risque moyen à élevé Risq

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

FOSMOR Fooo Optical Sheet Music Recognition

Introduction au langage C

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall

L exclusion mutuelle distribuée

TP : Gestion d une image au format PGM

Utilisation du logiciel ImageJ gratuit

Correction TD algorithmique

9 LE DÉMARRAGE DE L ENTREPRISE. Je crée donc. su s

TEXT MINING von 7

Algorithmes d'apprentissage

CHAPITRE VIII : Les circuits avec résistances ohmiques

APPLICATION THOMSON HEALTHCARE GUIDE D UTILISATION

Algorithmique et Programmation, IMA

TDB-SSI LES EXTENSIONS

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Créer une base de données

Atelier Transversal AT11. Activité «Fourmis» Pierre Chauvet.

Présentation de GnuCash

Traitement bas-niveau

4. Groupement d objets

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Répartition des coûts du compte de pass-on par catégorie de consommateurs

Écrire pour internet. Comment les internautes lisent ils? La lecture à l'écran

Introduction à MATLAB R

De l automatisme à la domotique...

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

LES DÉTERMINANTS DE MATRICES

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

Transformations nucléaires

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Transcription:

MINISTÈRE DE L ENVIRONNEMENT, DE L ENERGIE ET DE LA MER MINISTÈRE DU LOGEMENT ET DE L HABITAT DURABLE Examen professionnel de vérification d'aptitude aux fonctions de programmeur - Session 2016 - Épreuve écrite INFORMATIQUE Analyse critique d'un programme rédigé dans un langage évolué choisi par le candidat. Langage : Durée : C++ 5 heures Coefficient : 4 Notation : sur 20 Nombre de pages du sujet : 8 (y compris cette page) Matériel : Aucun matériel autorisé. Documents : Aucun document autorisé. Observations : La lisibilité et la qualité de l expression écrite seront prises en compte dans l appréciation de la copie. Remarque générale : Il est vivement conseillé aux candidats de travailler sur un brouillon et de prévoir un temps de rédaction au propre sur la copie définitive. 1 le sujet comporte deux parties : un sujet général commun aux différents langages noté sur 6 (temps estimé 1h30) un sujet spécifique au langage choisi noté sur 14 (temps estimé 3h30) 2 si éventuellement il vous manquait des informations particulières pour développer votre sujet, il vous revient de retenir les hypothèses adaptées à votre solution, en les explicitant clairement. 3 aucun document ou matériel électronique (calculette, ordinateur ) n est autorisé. Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 1/8

1ère partie 1 Sujet commun Réseaux de neurones 1.1 Description Le fonctionnement du cerveau humain a inspiré une classe d'algorithme appelé réseaux de neurones. L'exemple le plus simple est le «Perceptron». Il s'agit d'un ensemble de neurones organisés sous forme de couches. La première est appelée couche d'entrée et la dernière couche de sortie. Fonctionnement d'un neurone Chaque neurone est relié à tous ceux de la couche précédente et dispose d'un poids sur chacune de ses connexions. On effectue alors la somme pondérée de l'ensemble de ses entrées. Ce qui donne pour le neurone j : net j = w ij x i i=1 La sortie du neurone sera alors calculée en utilisant une fonction d'activation paramétré par un seuil Θ : o j =ϕ Θ (net j ) Cette fonction vaut presque 0 avant le seuil et monte très vite à 1 après le seuil. Un neurone laisse donc passer l'information seulement s'il est suffisamment excité sur ses entrées. Ainsi, l'information se propage de couche en couche jusqu'à atteindre la couche de sortie. On peut utiliser un Perceptron pour catégoriser des images. On branche chaque pixel de l'image sur un neurone de la couche d'entrée. Il est alors possible d entraîner le réseau en ajustant les poids de chaque neurone pour que la couche de sortie indique dans quelle catégorie l'image se trouve. On utilise alors autant de neurones en sortie que de catégories. L'exemple classique consiste à reconnaître l'écriture manuscrite des chiffres. Lorsque l'on présente l'image du chiffre 1 en entrée : un tableau de pixel noté X, le réseau donnera en sortie un vecteur noté Y : {1,0,0,0,0,0,0,0,0,0} c'est-à-dire que seul le premier neurone sera activé. Lorsque l'on présente l'image du chiffre 2 on obtiendra {0,1,0,0,0,0,0,0,0,0} et ainsi de suite. Un réseau de neurone correctement entraîné sera capable d'identifier un chiffre dont l'image serait légèrement modifiée. n Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 2/8

Perceptron Pour des questions de lisibilité, l'ensemble des flèches n'ont pas été représentées L'une des méthodes d entraînement les plus utilisées s'appelle la rétro-propagation du gradient, basée sur l'idée de détecter les poids qui ont le plus d'influence sur les erreurs produites par le réseau et de les modifier en conséquence, en partant de la sortie et en propageant les erreurs vers l'entrée. On utilise le gradient afin de savoir dans quel sens modifier le poids. On note en minuscule les éléments d'un tableau. Par exemple : x i indique le i ème élément du tableau X. Les étapes de l'algorithme sont les suivantes : Pour chaque exemple (X, Y) : On calcule la sortie du Perceptron noté S Les valeurs de chaque neurone en sortie sont notées s k Pour chaque neurone de sortie k, on calcule un écart e k basé sur l'erreur et le gradient : e k =s k (1 s k )( y k s k ) Les valeurs de chaque neurone de la couche cachée sont notées o j Pour chaque neurone caché j, on propage l'erreur en calculant l'écart e j : e j =o j (1 o j ) e k w jk neurone(k )en sortie On peut alors mettre à jour les poids w ij en utilisant le coefficient d'apprentissage η qui est une variable donnée. Pour les poids entre la couche cachée (neurones j) et la couche de sortie (neurones k) : w jk w jk +ηe k o j Pour les poids entre la couche d'entrée (neurones i) et la couche cachée (neurones j) : w ij w ij +ηe j x i On répète ce processus jusqu à ce que la somme des erreurs soit inférieure à un seuil ε nombre d'itération dépasse le seuil N. ou que le Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 3/8

1.2 Travail demandé On suppose que la fonction qui calcule ϕ Θ ( x) est donnée par phi(x). 1. Écrire en pseudo code la méthode qui calcule la sortie d'un Perceptron en fonction d'un ensemble x i de valeurs en entrée. 2. Écrire en pseudo code la méthode d entraînement par rétro-propagation du gradient. On fournit à cette méthode un ensemble d'exemples : une série de tableaux X contenant les entrées à présenter au Perceptron et une série de tableau Y contenant les sorties attendues. On suppose que les constantes suivantes sont données : N, ε et η Note : on utilisera la fonction de la question 1 pour obtenir la sortie du Perceptron et on suppose qu'elle stocke également les sorties intermédiaires des neurones de la couche cachée dans le tableau O Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 4/8

2 ème partie 2 Questions de syntaxe Langage C++ Q1 : Expliquez le mot clef void. Donner un exemple de son utilisation. Q2 : À quoi sert le mot clef unsigned? Q3 : Dans le code suivant : int n; int* p = &n; int& r = *p; Que représentent p et r par rapport à n? Q4 : Dans la définition d'une classe, que signifie cette syntaxe :virtual void test() = 0; Q5 : A quoi sert le mot clef inline? Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 5/8

3 Problème 3.1 Description Vous avez en charge l implémentation d un système générant automatiquement des labyrinthes de taille arbitraire. Un labyrinthe est inscrit dans un tableau de m x n cellules. Un mur est matérialisé par un segment horizontal ou vertical entre deux cellules : Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 6/8

3.2 Travail demandé Pour plus de clarté, vous expliquerez et/ou illustrerez en début de chaque question le fonctionnement des méthodes/fonctions avant l'écriture du code. 1. Algorithme 1 : Exploration exhaustive On part d un labyrinthe où tous les murs sont fermés (quadrillage). On choisit aléatoirement une cellule, on la marque comme visitée. Parmi les cellules voisines non visitées, on en choisit une au hasard, on ouvre le mur et on recommence avec la nouvelle cellule. S il n y a pas de cellule voisine, on revient à la case précédente et on recommence. Lorsque l on est revenu à la case de départ et qu il n y a plus de possibilités, le labyrinthe est terminé. 1a. Écrivez la classe Labyrinthe représentant seulement la structure de donnée adaptée à cet algorithme, ainsi que le constructeur de cette classe initialisant la structure conformément à l algorithme à partir des nombres entiers m et n. 1b. Votre collègue a codé les méthodes suivantes de la classe Labyrinthe : ouvrirmur(...) : Enlève le mur demandé du labyrinthe. listervoisins(...) : Donne la liste/ensemble des cellules voisines, visitées ou non. En adoptant une stratégie récursive, implémentez la solution en écrivant le code de la méthode récursive parcours(...) ayant pour paramètre la position en cours. Le labyrinthe modifié doit être une solution. Veillez à appeler les méthodes codées par votre collègue, sans écrire leur implémentation. Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 7/8

Méthode 2 : Fusion aléatoire de chemins On part aussi d un labyrinthe où tous les murs sont fermés, et l on associe une valeur numérique différente à chaque cellule. À chaque itération, on choisit un mur à ouvrir et si les deux cellules possèdent des valeurs différentes, on ouvre le mur et les deux chemins contenant les deux cellules prennent la même valeur (peu importe laquelle). Lorsque toutes les cellules ont la même valeur, le labyrinthe est terminé. 2a. En réutilisant la structure de données Labyrinthe, écrivez la méthode miseajourzones(...) qui permet de mettre à jour le labyrinthe lors d une itération, avec comme paramètre le mur ou les cellules adjacentes au mur. Vous pouvez, si besoin, enrichir votre structure de données d informations supplémentaires. Dans ce cas, veillez à préciser clairement les attributs ajoutés. 2b. Proposez une structure de données différente pour que la mise à jour des valeurs soit plus performante. Épreuve écrite : Informatique Durée : 5 h Coefficient : 4 Page 8/8