[en] ABSTRACT: The role played by markets in the allocation process of resources constitutes a central issue in the study of the economy. Even if a market is introduced as a decentralized organization, it works under certain rules. Particular features of potential transactions or market failures can cause malfunctions, or also unwanted results. On this issue, economic theory has been contributing in the effort of designing institutional frameworks that facilitate exchange and efficient allocation of resources, shaping what nowadays is known as market design. The Matching focuses on those situations where the elements that are going to be allocated are heterogeneous and indivisible, being frequently impossible to use monetary payments. The allocation of students to schools or universities, the organization of a kidney-exchange system, or the way to organize some labour markets are some of the examples in which theoretical developments related to the Matching have been applied. On the following document, the Matching will be studied from both theoretical and practical perspective. On one hand, related literature will be revised in order to locate the matching in the Cooperative Game Theory. Afterwards, it's fundamentals will be explained in the following way: stability and optimality of a matching will be analyzed, contexts in which it's application is necessary will be identified and the way that the Matching is implemented will be summarized. For that implementation, the way that a Clearing House improves an allocation context will be explained, as well as the most important allocation algorithms that participate in the process. With regard to the practical implementation of one of the studied algorithms, a computer program written in C++ code will be developed. In particular, the program is going to be able to match up individuals of two different groups that can have different number of members, existing the possibility that the agents of one of the groups can be matched up with more than one individual.

[es] RESUMEN: El papel de los mercados en el proceso de asignación de los recursos constituye el tema central de estudio de la economía. Aunque normalmente se presenta el mercado como una organización descentralizada, lo cierto que es cualquier mercado funciona bajo unas determinadas reglas. Determinadas características de las transacciones potenciales o los denominados fallos de mercado pueden hacer que el mercado no surja de manera tan espontánea o que, si lo hace, los resultados no sean los deseados. La teoría económica ha venido contribuyendo en el intento de diseñar marcos institucionales que faciliten el intercambio y la asignación eficiente de los recursos, dando lugar al surgimiento de lo que hoy se conoce como diseño de mercados. El matching se ocupa de aquellas situaciones en las que las unidades a asignar son heterogéneas e indivisibles y, en muchas ocasiones, sin la posibilidad de realizar pagos en dinero. La asignación de alumnos a los colegios u universidades, la organización de un sistema para la asignación de riñones procedentes de donantes o la forma de organizar determinados mercados laborales son algunos de los ejemplos en los que se han aplicado los desarrollos teóricos relacionados con el matching. En el trabajo presentado a continuación, se abordará el matching desde una perspectiva teórica y otra práctica. Por un lado, se revisará la literatura con el fin de localizar el matching dentro de la teoría de juegos cooperativa, para después desglosar su contenido. De esta forma, se caracterizarán la estabilidad y optimalidad de un matching, se identificarán los contextos en los que es necesario aplicarlo y se concretará la forma de instrumentación del mismo. Para dicha instrumentación, se analizará en qué manera contribuye el establecimiento de un Clearing House a mejorar un contexto de asignación, y cuáles son los principales algoritmos de asignación que se aplican a través del mismo. Por otro lado, para la implementación práctica de uno de los algoritmos estudiados, se desarrolla un programa escrito en lenguaje C++. En particular, el programa permitirá emparejar individuos de dos grupos que no tienen por qué tener la misma cantidad de integrantes, existiendo la posibilidad de que los agentes de uno de los grupos puedan emparejarse con más de un individuo.