Updated: Mar 25
A wireless sensor network consists of autonomous sensors scattered in a field where they monitor/detect/track objects and environmental conditions such as temperature, sound, and pressure. In this lab, you are going to process information collected by sensor networks to detect possible objects and regions of interest.
Part I. Object Detection
A sensor network is deployed in a 2D field (a 2D rectangular grid) to detect objects of interest. For ease of data presentation, the collected sensor data is described by an N×N grid of characters. The characters are in the range A…Z. The object could be an animal or a vehicle of some shape or color. Let the characters represent one of 26 possible colors. As the designer of the sensor network, you know roughly what you plan to detect. We define a potential object of interest (POI) as follows. A POI is a rectangular sub-grid (possibly the entire 2D grid) with sides parallel to the sides of the sensor network field which is a square. We stipulate that a POI must not be contained within any other POI. That is, no smaller subset of a POI is also a POI. Additionally, we expect a POI must containexactly two colors. One of the two colors forms a contiguous region. The other colorforms two or more contiguous regions. A real-world case would be to identify vehicles with camouflage.A region is considered to be contiguous if one can traverse the entire region by moving repeatedly from one cell in the region to another cell in the region taking steps up, down, left, or right (diagonals moves are not allowed).
For example, a 2D sensor field may produce sensor data as a rectangle with the following colors
This turns out to be a valid POI because the color C forms a single contiguous region and color B forms more than one contiguous region.In this dataset, we may have detected part of a vehicle.
In Part I, you are asked to write a program to determine the number of potential objects of interest in the given 2D sensor data set.
INPUT FORMAT (file sensor1.txt):
The first line of input specifies the size of the sensor field N (where 1≤N≤20). The field is an NxN square. The next N lines describe the data produced by the sensor network. Each line consists of N colors represented by N characters.
OUTPUT FORMAT (file sensor1out.txt):
Your solution must produce a single integer to indicate the number of potential objects of interest detected in the sensor field.
In the example above, we can detect two potential objects of interest.
Part II. Region of Interest
In Part II, we use the same sensor network to monitor a field. However, the objective is different. Instead of detecting objects of interest, we are interested in finding out the size of regions of interest. As in Part I, we have a sensor field of NxN square cells. Each sensor reports the “status” of a cell using an integer. Neighboring cells (cells either above, below, left, or to the right) reporting the same
“status” form a contiguous region. We do not count diagonal cells with the same “status” as part of the same contiguous region however.
Your task is to write software to determine two things: (1) the size of the maximum contiguous region (i.e., count the number of cells) of the same “status”; (2) the size of the maximum contiguous region that shows two different “status”. This kind of contiguous region must have two different “status”, not just one “status”.
INPUT FORMAT (file sensor2.txt):
The first line of input specifies the size of the sensor field N (where 1≤N≤250). The field is an NxN square of cells. This is followed by N lines. Each of the N lines contains N integers “status” of the sensor reading of the cell (the sensor “status” value is between 0 and 106).The sensor network designer knows that there are at least two different “status” values that will be produced by the sensor network in the sensor field.
OUTPUT FORMAT (file sensor2out.txt):
Produce two pieces of information in two separate lines: (1) the size of the largest contiguous region that shows the same “status”; (2) the size of the largest contiguous region that shows two different “status”.
8 3 9 3
4 9 9 2
9 9 2 7
8 2 2 9
Test Cases Screen Shots -
Test Case 1 Input
Out put - Test Case 1