{"id":28168663,"url":"https://github.com/ayvero/practico_prog3","last_synced_at":"2025-06-10T16:32:21.246Z","repository":{"id":285008479,"uuid":"808360515","full_name":"Ayvero/Practico_Prog3","owner":"Ayvero","description":"Final practical assignment focused on task scheduling and processor optimization using Backtracking and Greedy algorithms.","archived":false,"fork":false,"pushed_at":"2025-03-28T22:15:51.000Z","size":340,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-15T15:14:01.534Z","etag":null,"topics":["backtracking-algorithm","greedy-algorithms","java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ayvero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-30T23:03:34.000Z","updated_at":"2025-03-28T23:58:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"c9f46a6f-2cf6-4d91-af8b-a89bad4cef06","html_url":"https://github.com/Ayvero/Practico_Prog3","commit_stats":null,"previous_names":["ayvero/tpe_programacion3_2024"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayvero%2FPractico_Prog3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayvero%2FPractico_Prog3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayvero%2FPractico_Prog3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayvero%2FPractico_Prog3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ayvero","download_url":"https://codeload.github.com/Ayvero/Practico_Prog3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayvero%2FPractico_Prog3/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259110088,"owners_count":22806645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backtracking-algorithm","greedy-algorithms","java"],"created_at":"2025-05-15T15:13:59.831Z","updated_at":"2025-06-10T16:32:21.231Z","avatar_url":"https://github.com/Ayvero.png","language":"Java","readme":"# Trabajo Práctico Final - Optimización de Asignación de Tareas  \n\n## 📌 Descripción  \n\nEste proyecto es el trabajo práctico final de la materia **Programacion 3** en la **Universidad Nacional  del Centro (UNICEN)**.  \nEl objetivo es desarrollar algoritmos de búsqueda y optimización para la asignación eficiente de tareas a procesadores, aplicando técnicas de **Backtracking** y **Greedy**.  \n\nEl problema se basa en procesar información de archivos CSV que contienen listas de tareas y procesadores, y luego asignarlas de manera óptima bajo ciertas restricciones.  \nEl desafío principal es minimizar el tiempo de ejecución total, asegurando un reparto eficiente de las tareas y cumpliendo con las condiciones establecidas.  \n\n## 🎯 Objetivos  \n\n- Implementar búsquedas eficientes sobre un conjunto de tareas.  \n- Asignar tareas a procesadores minimizando el tiempo máximo de ejecución.  \n- Comparar soluciones obtenidas mediante **Backtracking** y **Greedy**.  \n- Analizar la eficiencia de ambas técnicas mediante métricas cuantificables.  \n\n## 🔍 Tecnologías y Conceptos Aplicados  \n\n- **Lenguaje**: Java  \n- **Estructuras de datos**: Listas, Colas, Pilas  \n- **Algoritmos de búsqueda y optimización**:  \n  - Backtracking  \n  - Greedy  \n- **Análisis de complejidad**  \n\n## 📂 Estructura del Repositorio  \n\n- `TPE/` → Código fuente del proyecto  \n- `dataTPE/` → Archivos CSV de entrada  \n- `Enunciado.pdf` → Detalle completo del enunciado del trabajo práctico  \n\n## 📊 Comparación de Algoritmos  \n\nLos resultados incluyen:  \n\n| Técnica       | Tiempo Máximo de Ejecución | Costo Computacional |\n|--------------|--------------------------|----------------------|\n| **Backtracking** | [Valor] ms | [Cantidad de estados generados] |\n| **Greedy**      | [Valor] ms | [Cantidad de candidatos considerados] |\n\n## 🚀 Instalación y Ejecución  \n\n1. Clonar el repositorio:  \n   ```bash\n   git clone https://github.com/Ayvero/Practico_Prog3.git\n\n2.  Compilar el proyecto:\n   javac -d bin src/*.java\n\n4. Ejecutar el programa:\n\n   java -cp bin Main\n\n   📢 ### Notas\nEste proyecto fue desarrollado como parte de la evaluación final de Programacion 3.\n\nSe buscó aplicar buenas prácticas de programación y optimización de algoritmos.\n\nCualquier sugerencia o feedback es bienvenido.\n\n-----------------------------------------------------\n\n\n\n## Description\nThis is a final project for the \"Algorithms and Data Structures\" course. The task involves solving various problems related to processors and tasks. The first stage focuses on implementing simple services for task searches, while the second stage aims at solving task assignments to processors using different algorithmic techniques.\n\nThe project involves two stages:\n1. **Simple services for task searching**.\n2. **Task assignment to processors**, with the goal of minimizing execution time using two algorithmic techniques: Backtracking and Greedy.\n\nThe assignment involves processing two CSV files (`Procesadores.csv` and `Tareas.csv`), each containing data regarding processors and tasks. The processed data is then used to implement the required services and solve the task assignment problem.\n\n### Objective\n- In the first part, the objective is to implement the following services:\n  - **Service 1**: Given a task ID, retrieve all information about the corresponding task.\n  - **Service 2**: Allow the user to choose whether they want to view critical tasks or non-critical tasks, and generate the appropriate list.\n  - **Service 3**: Retrieve all tasks between two specified priority levels.\n\n- In the second part, the goal is to assign tasks to processors in a way that minimizes the final execution time, considering the following restrictions:\n  - No processor can execute more than two critical tasks.\n  - Non-refrigerated processors cannot dedicate more than a specified execution time (X) to assigned tasks.\n\n### Techniques to be used:\n- **Backtracking**: This technique will attempt all possible combinations of task assignments, ensuring that the constraints are met while trying to minimize the execution time.\n- **Greedy**: A greedy approach will be used, which assigns tasks in a way that minimizes the execution time at each step without considering future consequences.\n\n### Metrics:\n- **Backtracking**:\n  - **Solution**: Each processor with assigned tasks.\n  - **Maximum execution time**.\n  - **Metric**: Number of states generated.\n  \n- **Greedy**:\n  - **Solution**: Each processor with assigned tasks.\n  - **Maximum execution time**.\n  - **Metric**: Number of candidates considered.\n\nAdditionally, a brief explanation of the strategy used for each technique is required, which should be included as a comment before the main function.\n\n## Project Structure\n- `Servicios.java`: Contains the implementation of the required services and logic for both parts of the project.\n- `Tareas.csv` and `Procesadores.csv`: Sample data files that will be processed.\n- `README.md`: This file contains the description of the project and objectives.\n\n## Getting Started\nTo get started with the project, clone the repository to your local machine and compile the Java files using your preferred IDE or build tool.\n\n```bash\ngit clone https://github.com/Ayvero/Practico_Prog3.git\n\n\n---------------------------------------------------\n\n\n\n\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayvero%2Fpractico_prog3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayvero%2Fpractico_prog3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayvero%2Fpractico_prog3/lists"}